我想對某些字段執行排序操作。在該領域做出索引是否有利?例如:在索引字段上排序是否有優勢
SELECT * FROM `users` WHERE `age`=33 ORDER BY `name`
在這個查詢中,我知道有一個關於年齡的索引是有幫助的,但是如果我維護一個名稱索引會更好。索引它會有一個性能增益嗎?其他查詢也經常需要ORDER BY
操作。
我想對某些字段執行排序操作。在該領域做出索引是否有利?例如:在索引字段上排序是否有優勢
SELECT * FROM `users` WHERE `age`=33 ORDER BY `name`
在這個查詢中,我知道有一個關於年齡的索引是有幫助的,但是如果我維護一個名稱索引會更好。索引它會有一個性能增益嗎?其他查詢也經常需要ORDER BY
操作。
單獨使用name
上的索引對於此查詢可能不會有很大幫助,但(age, name)
上的索引可能不會。
雖然它不完全準確,但將索引視爲按索引中按鍵排序的行列表(例如,首先按age
排序,然後按name
排序),通常具有指導意義。對於您的示例查詢,所有具有age=33
的行自然會從按名稱排序的組合索引中排除,從而使您無法進行單獨的排序。有一個單獨的索引name
不會以同樣的方式幫助。
有33歲以上的用戶嗎?關於「名稱」的單獨的額外索引可能不太有用,但可能是索引(年齡,名稱)。 – Thilo