Mysql

選擇索引+其他欄位的位置

  • August 19, 2014

學習索引

我做了一個索引,由 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

引用自:https://dba.stackexchange.com/questions/74321