У меня есть таблица со всеми записями продаж (по документу/элементу). Мне нужен отчет с некоторыми индикаторами по позиции, но только для документов VB (тип документа). Однако мне нужны некоторые показатели, такие как максимальное количество в день/элемент, что заставляет меня к другому запросу, но это сгруппировано по дням. Проблема в том, что я получаю очень медленный запрос. В общей сложности 4700000 запрос занял 4 часа.Оптимизация запросов
Можно ли оптимизировать этот запрос? Наверное, не сделал это наилучшим образом ...
SELECT std.ItemID AS [REF.], SUM(std.Quantity) AS [TOTAL QTY]
, MAX(t1.Qty) AS [MAX QTY BY DAY]
, COUNT(DISTINCT(std.CreateDate)) AS [SALES DAYS]
, DATEDIFF(DAY,MIN(std.CreateDate),MAX(std.CreateDate))+1 AS [CALENDAR DAYS]
FROM SaleTransactionDetails std
INNER JOIN (
SELECT CreateDate, ItemID, SUM(Quantity) AS [Qty]
FROM SaleTransactionDetails
WHERE TransDocument = 'VB' AND CreateDate > '2012-12-15'
GROUP BY CreateDate, ItemID) t1
ON std.ItemID = t1.ItemID
WHERE std.TransDocument = 'VB' AND std.CreateDate > '2012-12-15'
GROUP BY std.ItemID
Буду признателен за любую помощь. Спасибо вам всем!
Этот вопрос не соответствует теме, потому что речь идет о просмотре кода. (Попробуйте codereview.stackexchange.com) – Stijn
Зависит от индексов и т. Д. –