我已经从这个网站获益很长一段时间了。这是我在网站上的第一个问题。这是关于性能调整报告查询。在这里。 1.调整Select语句以获得更快的结果
SELECT Count(b1.primkey)
from tableA b1 --WITH (NOLOCK)
join tableA b2 --WITH (NOLOCK)
on b1.email = b2.email
and DateDiff(day, b2.BookedDate , b1.BookedDate) > 1
tableA有大约700万行。电子邮件是varchar(100)
字段。 Bookeddate是一个日期时间字段。 primkey是一个int的主键列。
我写这个查询的目的是为了找出具有相同电子邮件ID的计数条目,但迟到一天。此查询大约需要45分钟才能运行。我真的想减少执行所需的时间。
由于这是报告,我妄图使用--WITH (NOLOCK)
选项来提高阅读时间。我在tableA上有一个列存储索引,我知道它正在被SQL优化器使用 - 可以在执行计划中看到。我正在使用SQL Server 2012.
- 有人可以告诉我,在这种情况下,会更好吗?在电子邮件上使用非聚簇索引或在tableA上使用非聚簇列索引?
请帮帮我。
请发布执行计划。如果您还无法在此处上传图片,则可以在外部托管它。或者将.sqlplan文件上传到某处。有多少个不同的电子邮件地址?考虑一下:如果2013-01-01日期的某个电子邮件有10条记录,2013-01-02日期的同一电子邮件有10条记录,那么这将记录为100(而不是10)。你知道吗? – usr