在我的案例中使用 SQL Server 2012 进行查询调优的可能性

Possibilities of Query tuning in my case using SQL Server 2012

我有 2 个表,分别是 SalesSalesDetailsSalesDetails 有 9000 万行。

当我要检索1年的所有记录时,几乎需要15分钟,而且还没有完成。

我尝试检索记录 1 个月,花了 1 分 20 秒 returns 大约 250 万条记录。我知道它很大。

有什么解决方案可以减少执行时间吗?

备注

我不想创建任何索引,因为它默认已经有足够的索引

我不知道你说你有索引是什么意思 "by default." 据我所知,创建上面显示的两个 table 默认情况下不会创建任何索引(除了聚集索引)。

话虽如此,您的查询很难优化,因为您要进行汇总和求和。这种行为通常需要接触每条记录,因此索引可能不可用。但是,我们仍然可以使用类似这样的方法来加速连接:

CREATE INDEX idx ON sales (ID, Invoice) INCLUDE (Date, Register, Customer)

假设 SQL 服务器选择使用这个索引,它可以扫描 salesDetails 然后根据这个索引快速查找每条记录(而不是 sales table 本身) 完成连接。请注意,索引涵盖了 select 语句所需的所有列。