Mysql Order By 未使用索引的坑


記錄一下。

援引自 https://segmentfault.com/q/1010000009440247

背景:

在項目中一個很大的庫進行條件過濾分頁查詢時,發現查詢時間非常久。排查sql執行計划,發現根本沒使用索引。

原因及解決辦法:

SELECT中查詢了索引建以外的列,那么ORDER BY就不會使用索引了。你可以用FORCE INDEX來強制使用索引。

還有一點,就是所謂的覆蓋索引。覆蓋索引的定義是:MySQL可以根據索引返回select字段而不用根據索引再次查詢文件而得出結果。

當你使用select *時,你沒有強制指定索引,那么mysql為了得到你的查詢的字段而查詢文件,然后再進行排序操作,這就沒有用到覆蓋索引。而你使用了force index就會強制使用覆蓋索引,這樣就不會出現filesort的情況了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM