Sql server 2000/2005 有自带的性能分析工具吗?测试两个SQL语句的性能 谢谢!
我想测试以下两个Sql语句的性能,SQL本身有什么工具吗?
事件探查器 也就是profiler 里的 trace 可以根据一个语句的执行时间.发现前者要快些,但不知道数据量大的时候是哪个快,所以需要个工具.
--嵌套
select a.OS_EFFORT_FORM_id,b.effort_date
from OS_EFFORT_FORM as a inner join
(select os_effort_form_id,max(effort_date) as effort_date
from OS_EFFORT_FORM_DETAIL
group by os_effort_form_id ) as b on a.os_effort_form_id=b.os_effort_form_id
--内联接
select a.OS_EFFORT_FORM_id,b.effort_date
from OS_EFFORT_FORM as a inner join
OS_EFFORT_FORM_DETAIL as b
on a.os_effort_form_id=b.os_effort_form_id
where not exists(
select 1 from OS_EFFORT_FORM_DETAIL where os_effort_form_id = b.os_effort_form_id and effort_date > b.effort_date
)
------解决方案--------------------n那就前一个快,我顶
------解决方案--------------------查看“执行计划”啊,为什么快,为什么慢,怎么解决,都可以分析出来。当然了,这是需要背景知识和实践经验的。
另外,Quest公司有专门的性能调优解决方案和软件产品,感觉是属于比较傻瓜化的那种。
------解决方案--------------------CTRL+L
------解决方案--------------------数据量大的时候是哪个快
-----------------------------
这个是压力测试了, sql 没有提供有压力测试的工具
------解决方案--------------------我觉得第一种方法快
--内联接
select a.OS_EFFORT_FORM_id,b.effort_date
from OS_EFFORT_FORM as a inner join
OS_EFFORT_FORM_DETAIL as b
on a.os_effort_form_id=b.os_effort_form_id
where not exists(
select TOP 1 --此处最好加上TOP 1
1 from OS_EFFORT_FORM_DETAIL where os_effort_form_id = b.os_effort_form_id and effort_date > b.effort_date
)