索引失效及优化:
模糊查询失效:
or连接失效:
违反最左前缀失效:
联合索引范围查询后的索引失效:
索引参与运算(包括函数)索引失效:
字符串不串不加单引号索引失效:
辨识度过低不走索引:
索引尽量使用覆盖查询:
查看索引使用情况:
导入文件优化:
SQL语句优化:
INSERT优化
原始方式
insert into table_name values(a,b);
insert into table_name values(c,d);
优化方式:
insert into table_name values(a,b),(c,d);
插入时手动开启事务并按顺序插入。
order by优化:
FileSort优化:
对于filesort的优化mysql提供了两种算法,其一是4.1之前的两次扫描算法,性能较差;其二是一次扫描算法,性能优但是占内存。
mysql通过比较系统变量max_length_for_sort_data的大小和Query语句取出字段的总大小来选择使用哪种算法,如果max_length_for_sort_data足够大,会选择一次扫描算法。所以我们可以通过增大max_length_for_short_data和sort_buffer_size来提高效率。
group by优化:
group by实际上也会排序,只是在排序后进行了分组。同样也可以用索引来提高效率。
子查询优化:
or优化:
limit优化:
索引提示:
索引失效及优化总结
1.or有一侧非索引会失效,可用Union代替。
2.模糊查询%号前置不走索引,可以覆盖解决。
3.违反最左前缀失效
4.索引字段参与运算失效
5.字符不加单引号会失效
6.IN(not in)、is(is not)匹配辨识度低的值会失效,可以用强制索引解决。
7.一个以上的二级索引参与分组索引失效。