2014-01-17 17 views
0

我有一列 - objectState,它只有3個值。但是這個列用於許多查詢。如果我爲此專欄編制索引,是否會改善性能?該表格相當大在有許多記錄但數據值很少的行上使用索引

+0

將取決於查詢處理表。什麼阻止你測試它? – MarkD

+0

我想有一些理論背景 – Anarion

+0

它可以提高性能,例如,如果其中一個值表示低表的一組表 –

回答

1

這取決於:-)

數據庫管理系統通常會使用索引的時候只有極少數的記錄將被訪問。因此,如果您的數據對於A值爲20%,對於B值爲40%,對於C值爲40%,並且您將選擇具有值A的記錄,那麼這仍然是大表格的20%。不是掃描索引,而是掃描整個表格,而不是掃描索引。另一方面,如果A是1%,B和C是99%,那麼是的,當選擇具有A值的記錄時,索引是一件好事。

說了這話之後,你的dbms必須知道在適當的時候使用索引的情況。例如,Oracle DBMS可以這樣做,只要您確保數據庫中可以找到該特定列上的最新直方圖。

弱dbms可能會被索引弄糊塗,猜測索引的存在僅僅暗示它的有用性。他們可能會在不應該的時候使用索引。

最後一些dbms能夠組合索引。 Oracle通過所謂的位圖索引來實現這一點,這些索引專爲少數值的colums而設計。所以你可能會問性別=女性,年齡組=年輕,購物愛好者=是和豐富=真實。所有這些列上的位圖索引都會導致在訪問表記錄之前添加這些位圖索引。可能只有性別= 50%的女性和50%的男性,但儘管看起來不像指數會對此有所幫助,但它會與其他指標結合使用。

所以讓我重複一遍:它取決於:-)

相關問題