Mysql
選擇索引+其他欄位的位置
學習索引
我做了一個索引,由 usergroupid 和birthdate 組成
我了解在搜尋 usergroupid 和/或生日時,查詢將受益於索引
但是如果我在查詢中輸入其他欄位會發生什麼?
SELECT * FROM mytable WHERE usergroupid = 54 AND (birthdate BETWEEN '1980-01-01' AND '1983-01-01') AND cityid = 100
額外
"AND cityid = 100"
的索引會弄亂索引,還是會被視為在處理索引後可以快速找到的東西?
額外的謂詞不會弄亂索引。很可能首先評估您的索引,然後根據謂詞 cityid = 100 評估找到的任何行。
另一方面,假設您的索引定義為 (usergroupid,birthdate)。如果您從查詢中刪除 usergroupid = 54,則索引不會有任何好處,您必鬚根據以下條件評估表中的所有行:
birthdate BETWEEN '1980-01-01' AND '1983-01-01') AND cityid = 100