Sql server 查询与跟踪结果非常不同的实际执行计划
我重建了索引并更新了统计数据 查询很简单,WHERE子句中有一个子查询Sql server 查询与跟踪结果非常不同的实际执行计划,sql-server,performance,Sql Server,Performance,我重建了索引并更新了统计数据 查询很简单,WHERE子句中有一个子查询 SELECT TOP 1 * from MeetingPost_reg WHERE userid = 1234 AND meetingpost_regid <> 9999 AND DateStart < (SELECT DateStart FROM MeetingPost_reg WHERE meetingpost_regid = 9999) ORDER BY DateStart desc datast
SELECT TOP 1 * from MeetingPost_reg
WHERE userid = 1234 AND meetingpost_regid <> 9999
AND DateStart < (SELECT DateStart FROM MeetingPost_reg WHERE meetingpost_regid = 9999)
ORDER BY DateStart desc
datastart上有一个索引userid。
meetingpost_regid是PK,带有聚集索引
SHOWPLAN_文本:
执行计划:
执行计划图显示了一个包含0行的索引查找和一个包含1行的聚集索引查找,总成本约为0.0006,总CPU成本约为0.002
跟踪显示持续时间为250,CPU 172,读取11。跟踪事件类是SQL:StmtCompleted
为什么此查询使用如此多的CPU?探查器事件显示172ms的工作时间和250ms的运行时间,11页读取。这是为了这次活动还是为了这次活动?如果稍后,此查询是批处理中唯一的语句吗 对于执行计划,您最好发布实际计划,将整个计划减少为2个运算符和4个数字0、1、.0006和.002,这样会从计划信息中损失很多
捕获的计划和语句执行是否引用完全相同的执行?如果是,您是否考虑过返回计划的成本已包含在跟踪事件中?是的,它是完全相同的执行,在探查器中运行。我不认为这是计划的成本,因为在活体内的查询同样繁重
StmtText
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|--Compute Scalar(DEFINE:([MeetingPost_reg].[message]=[MeetingPost_reg].[message], [MeetingPost_reg].[ProcessedComment]=[MeetingPost_reg].[ProcessedComment], [MeetingPost_reg].[ProcessedMsg]=[MeetingPost_reg].[ProcessedMsg], [MeetingPost_reg].[pos_discou
|--Top(1)
|--Bookmark Lookup(BOOKMARK:([Bmk1000]), OBJECT:([dbo].[MeetingPost_reg]))
|--Nested Loops(Inner Join, OUTER REFERENCES:([MeetingPost_reg].[datestart]))
|--Clustered Index Seek(OBJECT:([dbo].[MeetingPost_reg].[PK_MeetingPost_reg]), SEEK:([MeetingPost_reg].[meetingpost_regid]=9999) ORDERED FORWARD)
|--Index Seek(OBJECT:([dbo].[MeetingPost_reg].[MeetingPost_reg12]), SEEK:([MeetingPost_reg].[datestart] < [MeetingPost_reg].[datestart]), WHERE:([MeetingPost_reg].[meetingpost_regid]<>9999 AND Convert([MeetingPost_reg
(6 row(s) affected)