关于MYSQL优化(持续更新)
*利用MYSQL数据缓存提高效率,注意事项:
1.应用环境:不经常改变的表及对此表相同的查询
2.不适用于服务器端编写的语句
3.根据数据使用频率,合理分解表
4.合理使用默认条件,提高命中率
5.统一SQL语句编写规范,因为MYSQL解析时区分大小写
6.增加服务器缓存空间
*为查询缓存,优化查询语句:
// 查询缓存不开启
$r = mysql_query("SELECT username FROM user WHERE signup_date >= CURDATE()"); // 开启查询缓存
$today = date("Y-m-d");
$r = mysql_query("SELECT username FROM user WHERE signup_date >= '$today'");
用变量代替MYSQL函数,开启缓存
*EXPLAIN你的SQL语句,分析查询效率
*只要一行数据时,使用LIMIT 1
*为不经常添加修改,又经常查询的字段,添加索引
很蛋疼的一件事,自行衡量是否添加
*JOIN表的时候,使用相同类型的列,STRING类型,两表字符集要一致
*不使用 ORDER BY RAND(),性能会指数级下降
// 千万不要这样做:
$r = mysql_query("SELECT username FROM user ORDER BY RAND() LIMIT 1"); // 这要会更好:
$r = mysql_query("SELECT count(*) FROM user");
$d = mysql_fetch_row($r);
$rand = mt_rand(0,$d[0] - 1); $r = mysql_query("SELECT username FROM user LIMIT $rand, 1");
*避免SELECT *,应该用什么取什么,会导致速度变慢及网络负载加重
*使用VARCHAR类型当主键会降低性能,永远为每张表设置ID,最好为INT型(推荐UNSIGNED),并自增
*为有限取值的列使用ENUM
*选择性使用PROCEDURE ANALYSE()建议
*尽可能使用NOT NULL
*把IP地址存成UNSIGNED INT
*固定长度的表会更快
*垂直分割,注意分出去的表不经常被JOIN,否则性能会级数下降
*拆分大的DELETE 或 INSERT
*越小的列会越快,比如仅几条数据的主键可采用SMALLINT、TINYINT
*选择正确的存储引擎
关于MYSQL优化(持续更新)的更多相关文章
- MySQL 优化--持续整理
一.innodb体系结构优化: 1.IO优化 IO能力不足时 innodb_io_capacity 应该降低 innodb_max_dirty_pages_pct 应该降低 innodb_max_di ...
- 几种常用排序算法代码实现和基本优化(持续更新ing..)
插入排序(InsertSort): 插入排序的基本思想:元素逐个遍历,在每次遍历的循环中,都要跟之前的元素做比较并“交换”元素,直到放在“合适的位置上”. 插入排序的特点:时间复杂度是随着待排数组的有 ...
- mysql 应用 持续更新2 转载
作者:彼岸Queen旅行链接:https://www.zhihu.com/question/27334963/answer/266624031来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非 ...
- mysql 应用 持续更新
1.安装方法 贴出,my.ini # MySQL Server Instance Configuration File # -------------------------------------- ...
- 常用MySQL语句(持续更新)
1. 客户端登录 在终端输入 mysql -u[用户名] -p[密码] 2. 数据库级别操作 // 创建数据库 create database [db name]; // 查看数据库列表 show d ...
- nginx(tengine)的一些小优化(持续更新)
1.nginx日志切割脚本 需求来源:nginx本身并没有日志切割的功能,由访问产生的大日志很难进行分析. 实现目的:每天对nginx日志进行切割,并备份至指定文件夹. 简要指令: mv /usr/l ...
- mysql查询优化(持续更新中)
1. 索引不会包含有NULL值的列 (1) 应尽量避免在where子句中对字段进行null值判断,否则将导致引擎放弃使用索引而进行全表扫描 (2) 数据库设计时不要让字段的默认值 ...
- Mysql注入小tips --持续更新中
学习Web安全好几年了,接触最多的是Sql注入,一直最不熟悉的也是Sql注入.OWASP中,Sql注入危害绝对是Top1.花了一点时间研究了下Mysql类型的注入. 文章中的tips将会持续更新,先说 ...
- mysql 高性能日记之索引(持续更新)
本文仅限于自己读写的笔记,需要具有一定 mysql(inodb,myisam 引擎)基础的高端玩家,不感兴趣的玩家们就不用在意了 Inodb 引擎 1,每个新建索引,都需要考虑清楚看是否是必须的,很多 ...
随机推荐
- Google Reader的另一个开源的替代品Go Read
Google Reader到7月1号退休了,于是出现了一批Google Reader的替代品,比如Google Reader Is Shutting Down; Here Are the Best A ...
- Java 多线程并发 Future+callable 实例
需求:一个业务实现 查询, 因为 要查询十几次, 所以每个平均0.6秒, 之前只有主线程一步步查 ,结果用了10秒,效率十分低下 , 于是改用线程池并发: 以下是代码设计: 1.线程池工具类: pac ...
- 关于谷歌、火狐 右键没有发送到onenote选项
关于chrome .FF 右键没有发送到onenote选项 问题: 使用Microsoft office中的onenote作为自己平时学习和工作的 ...
- 海思android4.4 SDK编译Latin输入法
原来的HiSTBAndroidV500R001C01SPC020\device\hisilicon\bigfish\packages\apps\HiLatinIME\Android.mk内容例如以下: ...
- JAVA大集合数据分批次进行切割处理
今天遇到一个大集合里面的数据删除问题, 因为是一个大集合,如果同时传递到数据库,那么就会造成数据库压力 所以分批次的进行批量操作 其实 也可以采用多线程来处理或者多批次加多线程来处理都是可以的 下面的 ...
- 在Eclipse中显示空格(space)和制表符(tab)
显示空格(space)和制表符(tab)设置: Window->Preferences->General->Editors->Text Editors->Show whi ...
- ASP.NET Webform或者ASP.NET MVC站点部署到IIS下,默认情况下.json文件是不能被访问的,如果请求访问.json文件,则会出现找不到文件的404错误提示
解决方法 <system.webServer> <staticContent> <remove fileExtension=".woff" /> ...
- Android 使用弹出对话框,报Unable to add window错误
今天在使用Android弹出对话框的时候,报了一个unable to add window错误,我的代码如下 new AlertDialog.Builder(getApplicationContext ...
- U3D 实现地面碰撞效果
前面讲了如何让两个刚体碰撞: 现在来细细讲解一下, 首先,精灵刚体后就好比物理世界的物体,是受到重力所用的, 然后两个物体要添加碰撞系数才能实现碰撞, 这种情况下,碰撞后会使得另一个刚体也会随之运动, ...
- Missing artifact com.sun:tools:jar:1.5.0
http://java-suddy.iteye.com/blog/1821871(解决了我的问题)