【发布时间】:2014-08-06 09:52:56
【问题描述】:
请帮助我对以下查询进行优化。 “#oz”临时表有 16000 行。现在这个查询运行了大约 14 秒。
DOWNLOAD QUERY WITH DATA
create table #oz (
id int, from_sto_move bit, product_id int, [date] datetime,
qty_orlogo decimal(30, 10), qty_zarlaga decimal(30, 10), cost_prev decimal(30, 10)
)
print 'Query started on: ' + CONVERT(nvarchar(30), GETDATE(), 126)
select
oz1.product_id,
oz1.id,
oz1.from_sto_move,
sum(isnull(oz2.qty_orlogo, 0) - isnull(oz2.qty_zarlaga, 0))
qty_oz,
oz1.cost_prev
from
#oz oz1 left join
#oz oz2 on
oz1.product_id = oz2.product_id and
oz1.[date] > oz2.[date]
group by oz1.product_id, oz1.id, oz1.from_sto_move, oz1.cost_prev
print 'Query finished on: ' + CONVERT(nvarchar(30), GETDATE(), 126)
我需要不到 5 秒的时间。 谢谢
【问题讨论】:
-
什么版本的 SQL 服务器?
-
MSSQL2008 R2 Enterprice
-
我注意到
id在示例数据中不是唯一的,这是偶然还是“预期行为”?
标签: sql sql-server indexing query-optimization