方式一:修改my.inimysql
//定义多少秒的查询算是慢查询,这里定为2秒 long_query_time=2 //5.5及以上版本配置以下 slow-query-log=on slow_query_log_file="mysql_slow_query.log" //记录没有使用索引的query log-query-not-using-indexes
方式二:控制台开启sql
set global slow_query_lon=ON set global long_query_time=3600 set global log_querise_not_using_indexes=ON
上图为使用了索引,下图没有。数据库
type从好到坏依次是:system,const,eq_ref,ref,fulltext,ref_or_null,unique_subquery,index_subquery,range,index_merge,index,ALLbash
阿里规约要求:至少要达到 range 级别,要求是 ref 级别,若是能够是 consts 最好函数
一、索引失效的状况:post
二、优化数据库结构优化
分表分库 spa
三、优化LIMIT分页.net
当limit m,n的m过大时,致使每次查询都要先从整个表中找到知足条件 的前M条记录,以后舍弃这M条记录并从第M+1条记录开始再依次找到N条知足条件的记录。若是表很是大,且筛选字段没有合适的索引,且M特别大那么这样的代价是很是高的。日志
SELECT * FROM pre_forum_post ORDER BY pid ASC LIMIT 7332000,1000
select a.* from pre_forum_post a ,(select tid,position from pre_forum_post ORDER BY pid ASC LIMIT 7332000,1000) b where a.tid=b.tid and a.position=b.position