狀況

請考慮下列情況:

  • 您在 Microsoft SQL Server 中建立篩選過的索引以及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

更多的資訊

請參閱下列的 Microsoft 開發人員網路 (MSDN) 網站︰

建立已篩選的索引

叢集與非叢集索引描述

Need more help?

Expand your skills
Explore Training
Get new features first
Join Microsoft Insiders

Was this information helpful?

How satisfied are you with the translation quality?
What affected your experience?

Thank you for your feedback!

×