2017-02-27 55 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)完全檢查查詢計劃。

我認爲這是你如何微調任何查詢。

相關問題