2011-10-04 153 views
1

我有一個SQL表與這些列(id,A,B,C,D,E)。我應該選擇哪種索引選項?

我通常在(A和C)和(B和C)查詢,所以我決定讓指數這3個有一些這方面的選擇:

  • 指數爲A,B,C分開
  • 指數兩對(A,C)和(B,C)
  • 指數(A,B,C)

我應該選擇哪個選項?數據庫大小可能是一個問題,但假設現在不是什麼大問題。

+0

你正在使用什麼數據庫? –

+0

你得到的答案几乎是一個有教養的猜測。你的實驗和測量要好得多。 –

+0

@Conrad Frix。一些實驗總是很好,但是有一些規則要遵循。並不是這種情況不常見。最好的建議是爲你的具體數據庫搜索這個問題的答案,因爲這可能會有所作爲。 – GolezTrol

回答

2

在兩對上構建索引。對於大多數索引(儘管這可能因類型和數據庫而異),但如果只查詢A,則A,B上的索引也會使用,但如果只查詢B,則不使用A,B。因此,請確保第一列您的索引是您查詢的列。如果查詢A,B和A,C,但不是B或C,則只需要這兩對中的索引。

1

如果存儲/空間利用率是重要的,不是添加兩個單列索引,各A和B

如果這些查詢的性能是更關鍵的,然後添加兩個複合索引,一個在(A,C )和(B,C)上的另一個。

有人已經評論過,這些建議都是有教養的猜測。嘗試各種選項以找到最佳索引策略是一個好主意。