2013-04-30 64 views
1

我讀過的MySQL索引到左側,所以如果我創建跨兩列field1索引,field2我可以這樣做:MySQL索引在左邊?

SELECT .. FROM .. WHERE `field1` = 'x' AND `field2` = 'y'; 

SELECT .. FROM .. WHERE `field1` = 'x'; 

無一不會被罰款?我在問,因爲有時候它會被兩列查詢,有時候會被第一列查詢。或者兩種情況下有兩個不同的指數會更好嗎?

+0

鏈接爲你http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html – Rahul 2013-04-30 04:34:17

回答

0

是的,雙列索引可以使兩個查詢都受益。無需創建兩個索引。

實際上,工具pt-duplicate-key-checker會將單列索引報告爲冗餘。

1

Simontemplar,你是對的。兩個查詢都是對的。只要你沒有運行:

SELECT .. FROM .. WHERE `field2` = 'y' AND `field1` = 'x'; 

SELECT .. FROM .. WHERE `field2` = 'y'; 

保持一個綜合指數更不應該是一個問題。

+0

MySQL知道如何使用上面的第一個示例中的索引。優化器知道'AND'是可交換的。 :-) – 2013-04-30 04:43:21

+1

tks補充! – medina 2013-04-30 04:47:29