【发布时间】:2019-10-28 07:37:50
【问题描述】:
我正在尝试查找列中包含 NULL 的所有记录。该列已编入索引。但是,当我将 where 子句设置为
where person_key is null
SQL Server 需要很长时间才能响应。另一方面,查找特定值的查询会很快返回。
有没有办法编写查询来加快对 person_key 中具有 NULL 的记录的搜索?
【问题讨论】:
-
没有足够的信息来回答这个问题。我们需要查看表的 DDL、索引定义、完整查询和实际执行计划。
-
那么,在索引列中查询 NULL 时是否没有一般规则可遵循?查询几乎是 select * from vw_gld_re_gift where person_key is NULL
-
您可以尝试使用 person_key IS NULL 放置一个过滤索引,看看您是否获得了速度提升。
-
它
person_key被索引,并且你有非常小的百分比的空值,很可能服务器将进行索引搜索,然后进行集群索引查找以满足select *。如果有大量空值,那么在给定select *的情况下,服务器很可能会完全忽略索引并扫描表,因为无论如何它都必须这样做以满足*。作为起点,请尝试仅查询包含在person_key上的索引中的列。 -
标签: sql sql-server