文章詳情頁
mysql order by為什么沒有走索引排序?
瀏覽:229日期:2022-06-13 13:04:11
問題描述

order by city_id (主鍵走索引)
order by country_id(不走索引!!!)
問題解答
回答1:你的city_id是主鍵,而country_id是復(fù)合主鍵。
回答2:改成
SELECT * FROM city FORCE INDEX(idx_fk_country_id) ORDER BY country_id;
是這樣的,你在SELECT中查詢了索引建以外的列,那么ORDER BY就不會使用索引了。你可以用FORCE INDEX來強(qiáng)制使用索引。
還有一點(diǎn),就是所謂的覆蓋索引。覆蓋索引的定義是:MySQL可以根據(jù)索引返回select字段而不用根據(jù)索引再次查詢文件而得出結(jié)果。
當(dāng)你使用select *時,你沒有強(qiáng)制指定索引,那么mysql為了得到你的查詢的字段而查詢文件,然后再進(jìn)行排序操作,這就沒有用到覆蓋索引。而你使用了force index就會強(qiáng)制使用覆蓋索引,這樣就不會出現(xiàn)filesort的情況了。
回答3:
相關(guān)文章:
1. boot2docker無法啟動2. 關(guān)于docker下的nginx壓力測試3. java - SSH框架中寫分頁時service層中不能注入分頁類4. docker安裝后出現(xiàn)Cannot connect to the Docker daemon.5. mac里的docker如何命令行開啟呢?6. node.js - antdesign怎么集合react-redux對input控件進(jìn)行初始化賦值7. 為什么我ping不通我的docker容器呢???8. 老師,按tab鍵不起作用怎么回事9. docker鏡像push報錯10. dockerfile - 為什么docker容器啟動不了?
排行榜

熱門標(biāo)簽
網(wǎng)公網(wǎng)安備