Nonclustered-Index

是否值得將 NONCLUSTERD FILTERED INDEX 與子句 <>'' 一起使用?

  • September 21, 2021

我只是想創造NONCLUSTERED FILTERED INDEX條件:

WHERE varcharColumn <> ''

此列包含大約 3127 個不同的值,包括 value ''。在此表上執行的所有查詢都有條件:

WHERE varcharColumn <> ''

90% 的行包含空字元串,並且會被此過濾器排除。

您認為是否值得與上述子句共同創建這樣的索引?或者也許更好地創建NONCLUSTERED FILTERED INDEXwith 子句:

WHERE varcharColumn = ''

如果您的查詢主要包含WHERE varcharColumn <> ''條件,那麼這就是您需要用於索引的條件 - 過濾索引只包含對與條件匹配的行的引用,因此=在索引定義中使用意味著只能''找到與它匹配的行不能幫助您的查詢。

如果varcharColumn <> ''僅佔表的 10% 左右,那麼索引將非常小且快速且非常有用。如果比率反轉,那麼索引可能不會有太大幫助,只會佔用(更多)空間。

引用自:https://dba.stackexchange.com/questions/299904