问题在于索引是否正确。我不能改变或添加它。
我可以做些更好的查询计划吗?
2列索引:pid
,Date
。
但select
仅适用于Date
...
表deal
非常大(> 1 000 000行)
create table deal
(
Id Int, NOT NULL PRIMARY KEY NONCLUSTERED,
pid Int, NOT NULL,
Date smalldatetime NOT NULL
)
create clustered index pk ON deal (pid, Date)
select *
from deal
where Date between @d1 and @d2
答案 0 :(得分:0)
我建议使用ID作为聚集索引,并在日期创建第二个索引,包括ID和PID(覆盖索引)。如果进行批量插入,则删除日期索引并在之后重新创建它以提高插入性能。
答案 1 :(得分:0)
我会在id上创建聚集索引,并像这样
创建一个非聚集索引CREATE NONCLUSTERED INDEX noncluxidxdate ON deal (Date)
INCLUDE (id, pid);
这篇文章将帮助您理解 What do Clustered and Non clustered index actually mean?