【发布时间】:2015-05-08 03:00:35
【问题描述】:
我在 SQL Server 2014 中有一个表,其中包含超过 1500 万行和 49 列。像这样的简单查询需要大约 20 秒才能运行。有没有其他微调的方法? Date_run 和 skid 都是非聚集索引。
select skid, sum(price)
from stocktrack
where date_run >='2013-2-21'
and date_run <='2013-3-21'
group by skid
【问题讨论】:
-
skid 和 price 是否包含在 date_run 索引的索引中?如果你离开组,它会快多少?可以发一下执行计划吗?
-
这类查询非常慢,因为它只能在两个子句之一上使用 date_run 上的索引。如果出现问题,此索引扫描可能仍会返回表的所有行。在 Oracle 上,您可以强制执行“INDEX_ASC”扫描,但我不知道是否有 sqlserver 的等效项。
-
@MartinDrautzburg 他们在 MSSQL Sever 上被称为 HINTS
-
如果我错了,有人可以纠正我,但理想的索引应该是 date_run,包括skid 和 price。如果您没有该索引并且可以构建和测试它,那可能会给您一个快速的答案。
-
向我们展示您的表是如何定义的以及您在其上拥有哪些索引。
标签: sql sql-server performance