假設我有一個數據庫表,列a,b和c。我打算對所有三列進行查詢,但我不確定我查詢的是哪些列。有一個在一個索引極大加快了搜索的表足夠的行,但感覺不對的可能指標的所有排列(像這樣):有沒有更好的方法來索引多列而不是爲每個排列創建一個索引?
a
b
c
a, b
a, c
b, c
a, b, c
有沒有更好的方式來處理這個問題? (這很可能我只是很好地索引a,b,c,因爲這會很快減少行數,但是我想知道是否有更好的方法。)
如果您需要在實際數據中,更具體的例子是城市,州和郵政編碼。另外,我正在使用MySQL數據庫。
這是正確的答案。 MySQL的工作方式相同,這種技術被稱爲「最左前綴」。從http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html上的MySQL手冊:「如果表有多列索引,索引的任何最左邊的前綴都可以使用例如,如果您在(col1,col2,col3)上有三列索引,則您在(col1),(col1,col2)和(col1,col2,col3)上具有索引搜索功能, 「 – zombat 2009-07-07 03:20:32
嗯,我應該知道這一點。 ;)非常棒,我會給這個鏡頭。 – 2009-07-07 03:28:26
您可能還需要a,c,但這取決於您的查詢的樣子。您可能還需要單獨的索引來涵蓋Andriyev提到的OR情景,不確定。 – 2009-07-07 03:38:36