這是一個我永遠擁有的問題。MySQL索引和訂單
據我所知,指數的順序很重要。所以像[first_name, last_name]
這樣的索引與[last_name, first_name]
不一樣吧?
如果我只定義了第一個指數,它意味着它將只用於
SELECT * FROM table WHERE first_name="john" AND last_name="doe";
而不是
SELECT * FROM table WHERE last_name="doe" AND first_name="john";
由於我使用的是ORM,我在不知道這些命令將命令這些列將被調用。這是否意味着我必須在所有排列上添加索引?如果我有2列索引,這是可行的,但如果我的索引是3列或4列,會發生什麼?
所以我猜SELECT * FROM table WHERE last_name =「doe」AND first_name =「john」不會? 如果是這樣的話,那麼因爲所有的查詢建築物都被我的ORM隱藏起來了,所以我可能必須定義2個索引...真的很糟糕,因爲我有3列的索引來定義...... – 2009-08-09 21:11:34
不,你誤會了。 WHERE'last_name' =「doe」AND'first_name' =「john」查詢可以使用('first_name','last_name')或('last_name','first_name')索引。 – ChssPly76 2009-08-09 21:22:07
一個問題:對於具有2 AND條件的查詢,它是否重要,速度明智,它的索引與查詢中的條件相比是否「反向」,或者取決於這些列的基數? – Mihai 2014-11-12 21:52:25