我的数据库有700万条记录,包含30多个变量,下面的查询是根据每天的情况过滤数据,大约需要12分钟才能返回结果
select customername, productname from xyztable where (datatime between '2019-05-17 00:00:00.000'
and '2019-05-18 00:00:00.000')
同样的数据,我也需要过滤它的基础上每小时如下,
select customername, productname from xyztable where (datatime between '2019-05-17 00:00:00.000'
and '2019-05-17 01:00:00.000')
我希望查询结果会更快每小时的基础上,因为数据将非常少。但这和每天的时间是一样的。
所以基本上每小时和每天的查询都需要12分钟才能返回结果。
我是否可以让每小时的结果返回比每天快得多?
2条答案
按热度按时间jvlzgdj91#
如果没有执行计划,我只能假设有一个表扫描来读取数据。您可以通过创建覆盖索引将其更改为索引查找:
然后,查询将查找datatime的第一个值,然后扫描到最后一个符合条件的行。由于索引中包含customername和productname,因此计划中不需要查找。
jw5wzhpr2#
这是因为字段“datatime”上没有索引,所以SQLServer必须读取整个“xyztable”才能找到记录。尝试创建此索引: