本节提供了一些SQL Server工具的信息,你可以用这些工具来调试Transact-SQL语句。欲了解关于调试SQL
Server数据库的详细信息,请参阅本卷前面的“性能调节部分” SQL Server Query Analyzer(SQL
Server查询分析器) 你可以利用SQL Server查询分析器的图形化特性来更多的了解优化器是如何处理你的语句的。 SQL Server Profiler 该图形化工具实时捕获服务器活动的连续记录。SQL Server
Profier监视许多不同的服务器事件和事件类别,用用户指定的标准来过滤这些事件,并且输出到一个显示在屏幕上的轨迹,一个文件,或者另一个SQL
Server上。 SQL Server Profiler 可以用来: SQL Server
Profiler为一系列扩展存储过程提供了一个图形用户界面。你也可以直接使用这些扩展存储界面。因此,你可以创建自己的利用SQL Server
Profiler扩展存储过程的应用程序来监视SQL Server。 SET语句 SET语句可以在你的工作会话、运行中的触发器或者存储过程的生命期内设定SQL Server查询处理选项。 SET FORCEPLAN
ON语句强制优化器按照表在FROM子句出现的顺序处理连接,同Oracle优化器所用的ORDERED提示是类似的。 SET SHOWPLAN_ALL和SET
SHOWPLAN_TEXT语句只返回查询或者语句执行方案的信息,而不会执行查询或者语句本身。要执行查询或者语句。需要把适当的显示方案的语句设定为OFF。然后就可以执行查询或者语句了。SHOWPLAN语句的结果跟Oracle的EXPLAIN
PLAN工具是类似的。 如果SET STATISTICS
PROFILE是ON,则每一个执行的查询除了返回正常的结果集合,还加上一个额外的结果集合,该集合显示了一个查询执行的快照。其它选项包括SET
STATISTICS IO和SET STATISTICS TIME。 Transact-SQL语句处理包括两个阶段,编译和执行。NOEXEC选项编译每一个查询但不执行该查询。在NOEXEC设定为ON以后,后来的语句将不再执行,一直到NOEXEC设定为OFF。 SET SHOWPLAN ON SET NOEXEC ON go SELECT * FROM
DEPT_ADMIN.DEPT,
STUDENT_ADMIN.STUDENT WHERE MAJOR = DEPT go STEP 1 The type of query is SETON STEP 1 The type of query is SETON STEP 1 The type of query is SELECT FROM TABLE DEPT_ADMIN.DEPT Nested iteration Table Scan FROM TABLE STUDENT_ADMIN.STUDENT Nested iteration Table
Scan 查询优化 Oracle需要使用提示来影响它的基于开销的优化器的操作和性能。Microsoft SQL
Server的基于开销的优化器不需要使用提示来帮助其查询评估过程。但是,它们仍然可以在某些情况下使用。 INDEX = {index_name |
index_id}为那个表指定要用的索引名称或者ID。如果index_id为0,则强制该表进行扫描,而为1的index_id则强制使用一个分簇的索引,如果有的话。这跟Oracle中使用的索引提示是类似的。 SQL Server的FASTFIRSTROW指示优化器使用一个未分簇的索引,如果它的列顺序同ORDER
BY子句相匹配的话。该提示同Oralce中的FIRST_ROWS提示是类似的 |