如果需要在SQlServer下优化SQL性能,需要准备以下内容:1.SQL查询分析器设置:1.启用实际执行计划跟踪。2、每次执行需要优化SQL之前,带上设置SQL清除缓存。通常,在优化SQLServer性能时,为了保证性能问题真正得到恢复,我们需要关闭SQLServer自身的执行计划和缓存。可以使用以下设置清除缓存。DBCCDROPCLEANBUFFERS--清除缓冲区DBCCFREEPROCCACHE--删除计划缓存中的元素3.开启查询IO读取统计和查询时间统计。SETSTATISTICSTIMEON--执行时间2SETSTATISTICSIOON--IO读取打开设置后,执行SQL的效果如下:对于每个图标节点,当鼠标向上滑动时,可以看到具体的执行信息。如下图所示:您可以通过查看谓词、对象和输出列表来分析问题点或创建优化索引。当然你也可以改变查看方式,右键选择显示执行计划XML。还有一个特别的地方是:当你的SQL很长,逻辑关系很复杂的时候,执行计划会是一张很大的网络图,你会发现右下角有一个加号按钮。示意图。通过缩略图可以轻松定位到执行节点,使用起来也比较简单。2.分析SQLServerProfile和SQLquerytracker。1、打开方式:SQLServerQueryAnalyzer->Tools,SQLProfile。打开方法截图:2、连接&特殊设置:打开后界面如下图:设置正确的连接信息后,点击连接,弹出如下界面。按照图中的步骤进行设置。其中DatabaseId和HostName可以在查询分析器中查询到,脚本如下:SELECTDB_ID()SELECTDB_NAME()SELECTHOST_ID()SELECTHOST_NAME()其实HostName就是你本地的计算机名。最终设置完成后单击运行。正常跟踪效果如图:关注Duration、Writes、Reads、CPU,分析对象为TextData,执行的语句。其中,Duration为毫秒数,1000为1秒。应用总结&建议:以上应用合作方式为:1、首先使用SQL查询跟踪器跟踪你执行的SQL,然后通过对比Duration或者超出性能标准的SQl定位SQL(比如页面访问3s,5s,8s),报30s等2.在查询分析器中分析问题SQL,主要通过执行计划和IO统计来定位耗时比高和IO读取大的地方,然后逐步调整SQL逻辑关系(如添加业务条件过滤缩小集合、创建索引、调整like匹配等),优化后再跟踪看是否有效果,最终实现SQL优化的目标。至此,我常用的SQL性能优化方法基本讲完了,希望对大家有所帮助。
