优化
总结mysql中各种优化操作
sql语句
查询语句
建立有效索引(最少的索引过滤最多的数据,避免浪费磁盘空间)提高查询速度
where
count(1)与count(*)都是获取总数,count(列名)获取非null行数
移除非必要括号:((a AND b) AND c OR (((a AND b) AND (c AND d)))) -> (a AND b AND c) OR (a AND b AND c AND d)
尽量使用常量:(a<b AND b=c) AND a=5 -> b>5 AND b=c AND a=5
order by 与group by 尽量使用同一个表的
索引覆盖
范围查询
单索引:
组合索引:
索引合并
交集:多个索引分别查询求交集
并集:
索引下推
在存储引擎层尽量过滤数据,减少server端对数据的读取(即对联合索引充分利用)
比如index(name,age),sql name like 'q%' and age = 20
1、没有开启icp时值判断like 'q%'直接回表获取数据在判断age = 20
2、开启icp判断like 'q%' and age = 20后再回表
join算法
mysql中表之间的join就是多层嵌套循环
1、每次一条循环
2、每次多条进入内部循环(优势减少内部数据的获取次数)
Multi-Range Read Optimization
范围查找时不是一条一条的读取(乱序读取磁盘),而是查找完毕将id排序完毕一起查找(顺序读取磁盘)

浙公网安备 33010602011771号