方式一:修改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