2017-02-27 89 views
-1

我有上百万和上百万的数据在JC_ItemDailySalesParent表。当我进行分组时它的加载时间超过5分钟,但没有完成。SQL Server中我的查询的最佳索引是什么?

受影响的总行数是可能记录(不分组)

select pp.ItemLookupCode, 
      StoreID, 
      sum(Qty) TotalQuantity, 
      sum(ExtendedPrice) ExtendedPrice, 
      sum(ExtendedCost) ExtendedCost 
      into #temp_tt 
FROM [HQMatajer].[dbo].[JC_ItemDailySalesParent] pp 
WHERE (Time>=CONVERT(datetime,'2015-01-01 00:00:00.000',102)) and 
     (Time<=CONVERT(datetime,'2015-01-31 00:00:00.000',102)) 
group by pp.ItemLookupCode,StoreID 
    order by pp.ItemLookupCode 

我创建的索引时间

+0

我认为你的查询会提高,如果你捕捉到一个变量的截止日期,所以'convert'函数不必用于每一行。另外,如果你插入另一张桌子,你为什么要'订购'? – HoneyBadger

+0

只要看看执行计划。 –

+0

@HoneyBadger你能举个例子吗? –

回答

0

如果您已经有Time索引,执行以下操作,在您的查询可以提高性能:

declare @DateStart datetime = CONVERT(datetime,'2015-01-01 00:00:00.000',102) 
,  @DateEnd datetime = CONVERT(datetime,'2015-01-31 00:00:00.000',102) 

select pp.ItemLookupCode, 
      StoreID, 
      sum(Qty) TotalQuantity, 
      sum(ExtendedPrice) ExtendedPrice, 
      sum(ExtendedCost) ExtendedCost 
      into #temp_tt 
FROM [HQMatajer].[dbo].[JC_ItemDailySalesParent] pp 
WHERE Time>[email protected] and 
     Time<[email protected] 
group by pp.ItemLookupCode 
,  StoreID 
order by pp.ItemLookupCode 
0

这是什么表的PK?

是的,它有必要提供数据类型,如果你已经在这个表上的其他索引。除上述纠正查询外,还有 。

我)创建NCI时间包括(数量,扩展价格,ExtendedCost)

II)创建于ItemLookupCode一个NCI,STOREID包括(数量,扩展价格,ExtendedCost)

首先做的我),只有创造ItemLookupCode上的一个NCI,StoreID ,并使用diff重复检查实际的查询计划。参数。

如果索引未被使用,则执行i)和ii)完全检查查询计划。

我认为这是你如何微调任何查询。

相关问题