目前有一个像索引;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