文章詳情頁
mysql order by為什么沒有走索引排序?
瀏覽:135日期:2022-06-13 13:04:11
問題描述
order by city_id (主鍵走索引)
order by country_id(不走索引!!!)
問題解答
回答1:你的city_id是主鍵,而country_id是復合主鍵。
回答2:改成
SELECT * FROM city FORCE INDEX(idx_fk_country_id) ORDER BY country_id;
是這樣的,你在SELECT中查詢了索引建以外的列,那么ORDER BY就不會使用索引了。你可以用FORCE INDEX來強制使用索引。
還有一點,就是所謂的覆蓋索引。覆蓋索引的定義是:MySQL可以根據索引返回select字段而不用根據索引再次查詢文件而得出結果。
當你使用select *時,你沒有強制指定索引,那么mysql為了得到你的查詢的字段而查詢文件,然后再進行排序操作,這就沒有用到覆蓋索引。而你使用了force index就會強制使用覆蓋索引,這樣就不會出現filesort的情況了。
回答3:相關文章:
1. mysql - 請問數據庫字段為年月日,傳進的參數為月,怎么查詢那個月所對應的數據2. javascript - 求幫助 , ATOM不顯示界面!!!!3. javascript - 我的站點貌似被別人克隆了, google 搜索特定文章,除了域名不一樣,其他的都一樣,如何解決?4. [python2]local variable referenced before assignment問題5. php - 微信開發驗證服務器有效性6. 求救一下,用新版的phpstudy,數據庫過段時間會消失是什么情況?7. javascript - [MUI 子webview定位]8. Python2中code.co_kwonlyargcount的等效寫法9. javascript - vue+iview upload傳參失敗 跨域問題后臺已經解決 仍然報403,這是怎么回事啊?10. html - 移動端radio無法選中
排行榜
