У меня есть запрос Sql Ad-hoc, который плохо работает. Пожалуйста, помогите мне или дайте мне некоторые рекомендации по ее оптимизации. Вот ниже запрос:Sql Server 2008 R2 Оптимизация запросов
SELECT TOP 20 CustomerPrimaryExtID,
Max(POSTimeStamp) AS TransactionDate,
ExtLocationCode,
0 AS RedemptionAmount,
0 AS RedemptionCount,
TerminalNum,
LogixTransNum,
POSTransNum AS TransNum,
0 AS DetailRecords,
CustomerTypeID,
PresentedCustomerID,
PresentedCardTypeID,
HHID,
Replayed,
0 AS TransContext,
isnull(TransTotal, 0) AS TransTotal
FROM TransHist AS TH WITH(nolock)
WHERE (((CustomerPrimaryExtID IN ('')
AND HHID IS NULL)
OR HHID = '0000000250000013408'
AND CustomerTypeID <> 1)
OR (CustomerPrimaryExtID = '0000000250000013408'
AND CustomerTypeID = 1))
AND NOT EXISTS (SELECT LogixTransNum
FROM TransRedemptionView AS TR2
WHERE (((CustomerPrimaryExtID IN ('')
AND HHID IS NULL)
OR HHID = '0000000250000013408'
AND CustomerTypeID <> 1)
OR (CustomerPrimaryExtID = '0000000250000013408'
AND CustomerTypeID = 1))
AND TH.LogixTransNum = TR2.LogixTransNum)
GROUP BY CustomerPrimaryExtID,
HHID,
CustomerTypeID,
PresentedCustomerID,
PresentedCardTypeID,
LogixTransNum,
POSTransNum,
TerminalNum,
ExtLocationCode,
Replayed,
TransTotal
ORDER BY TransactionDate DESC
Возможно, вам не нужно столько столбцов GROUP BY, возможно, вам нужно всего лишь взять последние 20 транзакций ... если да, вы можете использовать номер строки или соединения. – Justin
Сколько строк в этих таблицах? –
Приходите на 62% стоимости в таблице, о которой мы ничего не знаем. Опубликовать представление или преобразовать запрос, чтобы не использовать представление. – Paparazzi