Performance 查询优化/性能
我有一个sql查询执行得很糟糕,它导致了表扫描/IO峰值。请检查下面的脚本和执行计划,并让我知道它是否需要索引或重构查询本身。谢谢 -质疑Performance 查询优化/性能,performance,sql-server-2008,tsql,Performance,Sql Server 2008,Tsql,我有一个sql查询执行得很糟糕,它导致了表扫描/IO峰值。请检查下面的脚本和执行计划,并让我知道它是否需要索引或重构查询本身。谢谢 -质疑 SELECT TOP 20 CustomerPrimaryExtID, Max(POSTimeStamp) AS TransactionDate, ExtLocationCode, 0 AS RedemptionAmount, 0 AS RedemptionCount,
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 = '0000000250000007320' AND CustomerTypeID <> 1
) OR ( CustomerPrimaryExtID = '0000000250000007320' AND CustomerTypeID = 1 )
)
AND NOT EXISTS
(
SELECT
LogixTransNum
FROM TransRedemptionView AS TR2
WHERE
(
( ( CustomerPrimaryExtID IN ( '' ) AND HHID IS NULL ) OR HHID = '0000000250000007320' AND CustomerTypeID <> 1 )
OR ( CustomerPrimaryExtID = '0000000250000007320' 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
你在帖子中提到的执行计划在哪里我试图上传它作为一个图片,但它不工作。有没有其他方法可以上传到这里?啊,你可能还没有足够的声誉来做这件事,你必须上传到另一个网站并链接到这里,或者在文本中包含你的执行计划这里是执行计划的链接:这不是全部,对吗?好的,我看到成本分别为97%和3%,所以这可能是最重要的部分,但您也可以获得基于文本的执行计划。如果在management studio中启用SET STATISTICS PROFILE ON,则您将获得该计划的其他结果