小编mor*_*hai的帖子

为什么在唯一索引扫描后使用聚合运算符

我有一个表,其中有一个针对不可为空值过滤的唯一索引。在查询计划中使用了 distinct。是否有一个原因?

USE tempdb

CREATE TABLE T1( Id INT NOT NULL  IDENTITY PRIMARY KEY ,F1 INT , F2 INT )
go
CREATE UNIQUE NONCLUSTERED INDEX UK_T1 ON T1 (F1,F2) WHERE F1 IS NOT NULL AND F2 IS NOT NULL 
GO
INSERT INTO  T1(f1,F2) VALUES(1,1),(1,2),(2,1)

SELECT DISTINCT   F1,F2 FROM T1 WHERE F1 IS NOT NULL AND F2 IS NOT NULL 
SELECT  F1,F2 FROM T1 WHERE F1 IS NOT NULL AND F2 IS NOT NULL  
Run Code Online (Sandbox Code Playgroud)

查询计划: 在此处输入图片说明

sql-server optimization filtered-index

14
推荐指数
1
解决办法
351
查看次数

标签 统计

filtered-index ×1

optimization ×1

sql-server ×1