大表慢查询

时间:2019-07-31 16:36:20

标签: sql

我有一个约有250,000,000行数据的表。每天早上8点左右将表写入一次。这是具有“ S4”程序包级别的SQL Azure实例。我正在尝试从表中提取一些数据,这非常慢。表上只有一个聚集索引。现在,以下查询需要大约25分钟的时间来运行,而我已经大大限制了日期。我确实需要运行至少一周的时间,但是它的性能使我丧命。有人对我可以尝试的方法有建议吗?预先感谢您的帮助。

SELECT BusinessDate,
       UnitNumber,
       UnitName,
       POSItemCode AS PLU,
       POSItemDescription AS MenuItem,
       RevenueCategoryDescription AS SalesCategory,
       POSOrderModeDescription AS OrderType,
       SUM (COUNT) AS NumSold,
       SUM (ExtendedSalesPrice) AS ValueSold
  FROM dbo.POSSales
 GROUP 
    BY BusinessDate,
       UnitNumber,
       UnitName,
       RevenueCategoryDescription,
       POSItemCode,
       POSItemDescription,
       POSOrderModeDescription
   HAVING (BusinessDate BETWEEN CONVERT (DATETIME,
                                         '2019-07-26 00:00:00',
                                         102)
                            AND CONVERT (DATETIME,
                                         '2019-07-28 00:00:00',
                                         102))
      AND (SUM (ExtendedSalesPrice) <> 0)

1 个答案:

答案 0 :(得分:0)

过滤聚合日期之前

SELECT BusinessDate, UnitNumber, UnitName, POSItemCode AS PLU, POSItemDescription AS MenuItem,
       RevenueCategoryDescription AS SalesCategory, POSOrderModeDescription AS OrderType, 
      SUM(Count) AS NumSold, 
      SUM(ExtendedSalesPrice) AS ValueSold
FROM  dbo.POSSales
WHERE BusinessDate >= '2019-07-26' AND
      BusinessDate < '2019-07-29' 
GROUP BY BusinessDate, UnitNumber, UnitName, RevenueCategoryDescription,
         POSItemCode, POSItemDescription, POSOrderModeDescription
HAVING SUM(ExtendedSalesPrice) <> 0;
相关问题