目前有一個像索引;SQL Server過濾索引性能
CREATE UNIQUE NONCLUSTERED INDEX [CDPAYAPP_INDEX03] ON [dbo].[CDPAYAPP]
(
[CLSVC_ID] ASC,
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 90)
不幸的是,我們的一些客戶對CLSVC_ID值可以是零100K或多行了幾百萬總行。這種基數似乎會導致優化器偶爾會將索引視爲低於最佳值,從而導致表掃描。一天多次更新統計信息可以幫助但不總是。
我試圖應用FILTERING INDEX子句,如;
create UNIQUE NONCLUSTERED index CDPAYAPP_INDEX3A ON CDPAYAPP (CLSVC_ID, ID)
WHERE CLSVC_ID > 0;
但注意到如果我在兩個索引列之外請求任何列,它將使用原始索引而不是過濾索引。如果我只選擇索引的列,它將使用已過濾的索引。
爲什麼?
,你能不能給我們查詢,其查詢計劃優化? https://www.brentozar.com/pastetheplan/ – Hybris95