如何在SQL Server中优化我的查询?

时间:2017-01-07 10:42:52

标签: sql-server query-optimization performancecounter

当我运行此查询时,它会 32秒。这个相同的查询没有改变它在 17秒中执行的任何事情直到昨天。

表格信息:

  • Item table = 158,117条记录
  • Transaction table = 4,096,589条记录
  • TransactionEntry table = 70,165,678条记录

我已按以下方式为这些表创建了索引

指数:

  • Item table = ID, ItemLookupCode, SupplierID, ParentItem
  • Transaction table = Time, TransactionNumber, StoreID
  • TransactionEntry table = TransactionNumber, StoreID, Quantity, Price, Cost

这是我的疑问:

--Total Quantity
SELECT 
    items.ItemLookupCode,
    sum(transactionsEntry.Quantity) Quantity,
    sum(transactionsEntry.Quantity*transactionsEntry.Price) TotalPrice,
    sum(transactionsEntry.Cost*transactionsEntry.Quantity) as ExtendedCost
INTO
    ##temp_TotalQuantity
FROM
    (SELECT 
         TransactionNumber, StoreID, Time
     FROM 
         [HQMatajer].[dbo].[Transaction]
     WHERE 
         Time >= CONVERT(datetime, '2015-01-01 00:00:00', 102) 
         AND Time <= CONVERT(datetime, '2015-12-31 23:59:59', 102)
    ) transactions     // this subquery alone taking 12 seconds
INNER JOIN
    [HQMatajer].[dbo].[TransactionEntry] transactionsEntry ON transactionsEntry.TransactionNumber = transactions.TransactionNumber 
                                                           AND transactionsEntry.StoreID = transactions.StoreID
INNER JOIN
    [HQMatajer].[dbo].[Item] items ON transactionsEntry.ItemID = items.ID
GROUP BY 
    items.ItemLookupCode

执行计划:

Execution Cost

0 个答案:

没有答案