2013-09-05 55 views
0

我們有一個有多列的表,我們在其中一列上有一個UNIQUE索引(我們稱其爲GBID),並且我們有另一列(讓它叫做flag)沒有任何跡象。此表格可能相當大,我們查詢WHERE gbid IN() AND flag = 1很多,我們偶爾會查詢WHERE gbid = "XXX"並且很少查詢WHERE flag = 1多列索引與獨特的索引效率相結合

哪個更有效,當談到indicies:

  1. gbidUNIQUEflag沒有指數
  2. gbidUNIQUE和有(gbid, flag)
  3. 多列索引有gbidUNIQUE並有多列索引(flag, gbid)

回答

0

它取決於flag = 1的行的百分比,以及您選擇的行數(您在IN子句中有多少個gbid)。

  • 如果它很低(1-2%),並且選擇了很多gbid,選項2和3可能會更快(我認爲選項3在這種情況下會更好)。
  • 如果你有一個更均勻的標誌值分佈,如果它在索引中沒有區別。

如果你想確定你應該用真實數據的樣本進行基準測試。