当前位置: 首页 > 图文教程 > 数据库 > MSSQL > 使用查询分析器调整SQL服务器脚本

MSSQL
sql 批量修改数据库表
mssql CASE,GROUP BY用法
利用SQL SERVER建立登录WINDOWS帐号
SQL Server 2008 正式版安装指南 包含序列号
SQL Server 2008图文安装教程
sql 语句 取数据库服务器上所有数据库的名字
sqlserver 数据类型转换小实验
SQL Server 存储过程解析
压缩技术给SQL Server备份文件瘦身
SQL Server 2005 还原数据库错误解决方法
Sql Server datetime问题
SQL语句 操作全集 学习mssql的朋友一定要看
格式导致的Excel导入sql出现异常的解决方法
SQL Server 数据库自动执行管理任务
sql Set IDENTITY_INSERT的用法
sql 修改表的所有者
过程需要参数 ''@statement'' 为 ''ntext/nchar/nvarchar'' 类型
mssql 建立索引
SQL Server 索引结构及其使用(一)--深入浅出理解索引结构
SQL Server 索引结构及其使用(二) 改善SQL语句

MSSQL 中的 使用查询分析器调整SQL服务器脚本


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-30   浏览: 51 ::
收藏到网摘: n/a

 

我喜欢把SQL服务器所捆绑的工具看作是倒金字塔型的,诊断和检查一般问题的工具在顶端,寻找和诊断问题具体区域的工具在底部。除了提供一种编写SQL脚本的便捷方式之外,在你需要解决特定SQL脚本里明确问题的时候,查询分析器(Query Analyzer)还是所需要使用的资源。如果你需要指出哪个查询正在保持着某个特定表格的锁定状态,你也会希望使用查询分析器。

查询分析器的关键诊断特性是它能够显示某个查询的执行计划。这个执行计划会向你提供各种类型的有用信息,例如在查询的执行期间如何以及何时使用或者不使用索引。它还会提供许多其他的细节,例如排序、平行(parallelism)、嵌套循环,以及SQL服务器在执行指定查询时必须做的其他事情。

计划的好处


有了查询分析器,你就可以查看预计计划而不需要运行查询本身,或者在查询执行之后查看真实的计划。很显然,真实的计划会更加准确,因为它是从物理上对数据库运行查询的。但是对于系统负载巨大和/或长期的查询,这种方法可能就不是最好的选择了。在典型情况下,当我认为某个特定的查询有问题的时候,或者如果我预计有一个查询会在应用程序里被足够频繁地调用以至于可能会导致性能问题的时候,我就会运行这个工具。

你可以通过把SQL表达式输入查询分析器再按[Ctrl]L来查看预计的执行计划。执行计划然后就会显示在结果(Results)面板的选项卡里。执行计划在刚开始的时候可能比较难读,因为它不像英语一样是从左往右读的,而是从右往左读的。


运行中的计划

这里有一个你可以跟着做的例子,从这个例子里你可以看到如何使用查询分析器来查看一个执行计划。考虑一下下面查询,它会从Northwind数据库里返回某个雇员所在的地点和相关地区:
 
SELECT
TerritoryDescription, RegionDescription
FROM
Employees e
JOIN EmployeeTerritories et ON e.employeeid = et.employeeid
JOIN Territories t ON et.territoryid = t.territoryid
JOIN Region r ON t.regionid = r.regionid
WHERE
e.employeeid = 1
ORDER BY
TerritoryDescription, RegionDescription
 
这个查询的结果显示:一号EmployeeId在东部(Eastern)有两个地区,如图A所示。

图A

查询结果

图B显示了SQL服务器从示例查询所生成的预计执行。这个图标中的每个节点都代表着SQL服务期执行示例查询所采取的步骤。要注意,每个节点包括一个预计的相对消耗,以及执行计划被显示的时候SQL服务器所使用的每个索引的名称。

图B

执行计划

你可以把鼠标放在执行计划的每个节点上以获取更多关于该步骤的信息,例如该节点所代表的操作类型、受影响的行数,以及和该步相关的消耗的分解。C显示的是图B里针对第一个节点的额外信息。这些弹出窗口里的信息能够提示你可以对查询做出哪些改进,如果能够改进的话。

图C



和索引调节向导一起使用

你可以将查询分析器和SQL服务器的索引调节向导(Server’s Index Tuning Wizard,ITW)一起使用。我通常使用SQL服务器的Profiler来收集要送入ITW的数据。但是有时候,我会使用查询分析器,如果我认为它代表着我正在进行测试时的某种活动类型的话。你可以从查询(Query)菜单来访问ITW;它能够对在活动编辑面板里的SQL脚本做出性能建议。