2016-12-02 62 views
0

使用過濾索引時是否存在繼承副作用?例如。如果你插入了一百萬行,索引需要更長的時間來處理等,而不是相同的索引是非過濾的?SQL Server:使用過濾索引有什麼副作用嗎?

+0

與* *相比的缺點*?如果您不使用過濾的索引,那麼您會使用哪些更好/更糟糕的(以及針對哪些場景),從而可以比較優勢和劣勢? –

+2

很多這些問題最終都歸結爲一個詞:「取決於」。各種環境和不同情況使得這幾乎無法準確回答。得到這個答案的方法是獲得一個開發環境並測試這兩個選項並比較性能。 –

+0

@Damien_The_Unbeliever我的意思是「副作用」而不是缺點。更新了標題。 –

回答

1

總是有一個門檻。
我們來看看它的邊緣情況 -

  • 如果所有的記錄通過過濾器以後,我們白白浪費了CPU。
  • 如果沒有任何記錄通過過濾器,那麼我們會投入一些CPU過濾出的記錄,但是我們保存了所有未插入的CPU,IO和內存。

你的情況是介於。

+0

謝謝。你能否詳細說明「如果沒有任何記錄通過過濾器,我們在過濾器上投入了一些CPU,但是我們爲所有沒有做過的插入操作節省了CPU,IO和內存。」 –

+0

假設我們有一個條件爲x> 999的過濾索引,我們將1M記錄插入表中,但所有的x值都小於999.爲了檢查每個記錄是否x> 999,我們必須投資一些CPU。但是,由於沒有記錄傳遞過濾器,因此我們不會向索引結構中插入任何新數據,因此我們不需要投入更多的資源,而不需要非過濾的索引,這在此時需要做一些工作。 –