关于执行计划的重用

mayuanf 2012-05-15 01:41:18
似懂非懂中...
假设在有两句语句


select * from tableA where a=1

select * from tableA where a=5

并且在sys.dm_exec_query_stats中显示,这两句query拥有相同的query_hash和query_plan_hash。应该怎么判断第二句query重用了第一句的执行计划? 根据sql server的parameterization的解释,就算是simple parameterization类似于上两句这么简单的query应该会被系统parameter后重用plan,但是我怎么能确认确实是重用了第一个query的plan?

假设是两句更复杂的query


select * from tableA left join TableB on ....
Left join (select ... from TableC) on....
...
.
where a=1

select * from tableA left join TableB on ....
Left join (select ... from TableC) on....
...
.
where a=5

再假设系统没用自动parameter这两句较复杂的query,需要我在application里使用parameter,
改成

select * from tableA left join TableB on ....
Left join (select ... from TableC) on....
...
.
where a=?

修改后应该怎么能看出parameter后的效果?

谢谢
...全文
55 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
mayuanf 2012-05-15
  • 打赏
  • 举报
回复
找到了...有一个event叫Showplan XML for Query Compile...
http://msdn.microsoft.com/en-us/library/ms186344.aspx

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧