索引和慢查询
慢查询的定义:
主要依据SQL语句的执行时间,它把当前语句的执行时间跟long_query_time 参数做比较,如果语句的执行时间 > long_query_time,就会把这条执行语句记录到慢查询日志里面。long_query_time 参数的默认值是 10s,该参数值可以根据自己的业务需要进行调整。
判断是否应用了索引:
通过 explain命令分析查看,检查结果中的 key 值,是否为NULL。
提高索引过滤性
假如有一个5000万记录的用户表,通过sex=’男’索引过滤后,还需要定位3000万,SQL执行速度也不会很快。其实这个问题涉及到索引的过滤性,比如1万条记录利用索引过滤后定位10条、100条、1000条,那他们过滤性是不同的。索引过滤性与索引字段、表的数据量、表设计结构都有关系。
分页查询优化
在查询记录时,如果查询记录量相同,偏移量超过100后就开始随着偏移量增大,查询时间急剧的增加。(这种分页查询机制,每次都会从数据库第一条记录开始扫描,越往后查询越慢,而且查询的数据越多,也会拖慢总查询速度。)这时候有几个优化方法
利用覆盖索引优化
在书写sql语句的时候不要写
select * from table
使用索引内部的字段
利用子查询优化
select * from user where id>= (select id from user limit 10000,1) limit 100;