我有一个表,我唯一一次选择或做任何事情就是找到某个日期列为空的所有行。从那里开始,我会用它做更新并更新该列,并且我可能永远不会再次访问该行,但审计目的除外。
那么,是否有最佳做法可以确保更快地找到我的列SentDate为空的行?
答案 0 :(得分:2)
当然,要优化表以查找NULL,请使用索引。 NULL被索引并且可以像任何其他值一样寻找:
create table foo (a int null, b varchar(100) null);
create clustered index cdxFoo on foo(a);
go
insert into foo (a,b) select Number, 'not null' from master..spt_values
insert into foo (a,b) values (null, 'null')
select * from foo where a is null
select的查询计划清楚地显示了对'NULL'键的搜索用于定位行。
答案 1 :(得分:1)
您可以将字段的Default Value or Binding
设置为永不使用的字段,然后查找该值。否则你将进行表扫描。
答案 2 :(得分:0)
在SQL Server 2008中,您可以过滤索引,因此理论上您可以创建索引以仅包含NULL值,即WHERE SentDate IS NULL。