本文可協助您解決在 SQL Server 中建立索引與 Column IS NULL 述詞運算式時所發生的問題。
原始產品版本:SQL Server
原始 KB 編號: 3051225
徵兆
請參考下列案例:
- 您會在 SQL Server 中建立篩選的索引與
Column IS NULL述詞表達式。 - [數據行] 欄位不包含在索引結構中。 (也就是說, 數據行 欄位不是篩選索引定義中的索引鍵或包含的數據行。
例如,您可以建立下列查詢:
CREATE UNIQUE CLUSTERED INDEX i_action_rn ON dbo.filter_test (rn)
CREATE NONCLUSTERED INDEX i_action_filt_action_date_type ON dbo.filter_test (action_type)
WHERE action_date IS NULL
注意
此查詢不會使用下列篩選索引:
SELECT count(*) FROM dbo.filter_test WHERE action_date IS NULL AND action_type=1
在此案例中,不會使用篩選的索引。 相反地,會使用叢集索引。
解決方法
若要解決此問題,請在傳回的數據行中包含測試為 NULL 的數據行。 或者,將此數據行新增為索引中的數據行。
CREATE NONCLUSTERED INDEX New_i_action_filt_action_date_type ON dbo.filter_test (action_type) include (action_date) WHERE action_date IS NULL