在列上设置过滤索引是否会改进与过滤条件相反的 WHERE 子句的查询?
由于过滤索引指定了不返回的内容,它是否减少了要搜索的记录数?
例子:
CREATE TABLE MyTable
(
ColumnA INT PRIMARY KEY CLUSTERED,
ColumnB INT NULL
)
CREATE NONCLUSTERED INDEX IX_MyTable_Filtered_ColumnB
ON MyTable (ColumnB)
WHERE ColumnB IS NOT NULL
索引应该改进这个查询:
SELECT ColumnA
FROM MyTable
WHERE ColumnB IS NOT NULL
这对这个有什么影响吗?
SELECT ColumnA
FROM MyTable
WHERE ColumnB IS NULL
不。如果您尝试强制“IS NULL”查询使用带有索引提示的过滤索引,您甚至可能会收到错误消息。