2016-04-20 57 views

回答

1

如果一個表的數據非常少(少量的行),那麼它不會爲您使用索引。索引使得它能夠快速搜索特定屬性,並且您正在使用的應用程序不需要快速查找,那麼使用索引對您而言幾乎沒有任何作用。

+0

非常感謝你這麼多! –

+0

您會驚訝於小桌子上的索引如何產生重大影響,例如如果表格被非常頻繁地查詢。完整索引掃描可能只需要讀取1個塊,而讀取表格則需要讀取至少2個塊。 –

4

有關聯到其索引的成本:

  • 它佔用的磁盤空間
  • 它會減慢更新(索引需要被更新)
  • 它使查詢計劃更復雜(稍慢,但更重要的是增加了做出錯誤決策的可能性)

這些成本應該被更有效的查詢處理(更快,更少的I/O)的好處所抵消。

如果索引不足以證明成本合理,則索引將爲負數。

2

特別是,如果你的數據分佈很低(認爲像'Y'和'N'這樣的標誌),索引不會有多大幫助。可以這樣想:如果索引中不同值的數量很少,優化器可能會選擇不使用索引。有趣的是,如果索引中的列爲空,如果您的查詢條件包含實際值,因爲空值沒有編入索引,這意味着只有實際值(非空)位於該特定索引中,從而不評估表中的大部分行。在「is null」的情況下,它永遠不會使用索引 - 如果你有一個帶有「where」子句的查詢,比如「where mytable.mycolumn爲null」,則放棄你在這裏輸入的所有索引。

相關問題