文章詳情頁(yè)
mysql order by為什么沒(méi)有走索引排序?
瀏覽:161日期:2022-06-13 13:04:11
問(wèn)題描述
order by city_id (主鍵走索引)
order by country_id(不走索引!!!)
問(wèn)題解答
回答1:你的city_id是主鍵,而country_id是復(fù)合主鍵。
回答2:改成
SELECT * FROM city FORCE INDEX(idx_fk_country_id) ORDER BY country_id;
是這樣的,你在SELECT中查詢了索引建以外的列,那么ORDER BY就不會(huì)使用索引了。你可以用FORCE INDEX來(lái)強(qiáng)制使用索引。
還有一點(diǎn),就是所謂的覆蓋索引。覆蓋索引的定義是:MySQL可以根據(jù)索引返回select字段而不用根據(jù)索引再次查詢文件而得出結(jié)果。
當(dāng)你使用select *時(shí),你沒(méi)有強(qiáng)制指定索引,那么mysql為了得到你的查詢的字段而查詢文件,然后再進(jìn)行排序操作,這就沒(méi)有用到覆蓋索引。而你使用了force index就會(huì)強(qiáng)制使用覆蓋索引,這樣就不會(huì)出現(xiàn)filesort的情況了。
回答3:相關(guān)文章:
1. python - django models 為生成的html元素添加樣式。2. css - chrome下a標(biāo)簽嵌套img 顯示會(huì)多個(gè)小箭頭?3. javascript - 有什么比較好的網(wǎng)頁(yè)版shell前端組件?4. javascript - vscode alt+shift+f 格式化js代碼,通不過(guò)eslint的代碼風(fēng)格檢查怎么辦。。。5. sql語(yǔ)句 - mysql中關(guān)聯(lián)表查詢問(wèn)題6. javascript - 如何將一個(gè)div始終固定在某個(gè)位置;無(wú)論屏幕和分辨率怎么變化;div位置始終不變7. mysql updtae追加數(shù)據(jù)sql語(yǔ)句8. javascript - 原生canvas中如何獲取到觸摸事件的canvas內(nèi)坐標(biāo)?9. html - vue項(xiàng)目中用到了elementUI問(wèn)題10. javascript - iframe 為什么加載網(wǎng)頁(yè)的時(shí)候滾動(dòng)條這樣顯示?
排行榜

熱門(mén)標(biāo)簽