WEB开发网
开发学院数据库MSSQL Server SQL Server 引用的各种对象的最大值 阅读

SQL Server 引用的各种对象的最大值

 2007-11-11 09:52:54 来源:WEB开发网   
核心提示: 在这部分里我们所有的例子都选择使用Microsoft SHOWPLAN_ALL输出,因为它更紧凑并且展示典型的信息,SQL Server 引用的各种对象的最大值(5),(Sybase的查询计划基本与此相同,可能包含其它一些信息)大部分的例子都是要么基于PUBS数据库,此外,这两种情况伴随着相同的结果集,要么基于标准系

在这部分里我们所有的例子都选择使用Microsoft SHOWPLAN_ALL输出,因为它更紧凑并且展示典型的信息。(Sybase的查询计划基本与此相同,可能包含其它一些信息)大部分的例子都是要么基于PUBS数据库,要么基于标准系统表的。我们在PUBS数据库中对用到的表进行了很大扩充,对很多表增加了好几万行。

子查询优化

一条好的值得称赞的规则是尽量用连接代替所有的子查询。优化器有时可以自动将子查询“扁平化”,并且用常规或外连接代替。但那样也不总是有效。明确的连接对选择表的顺序和找到最可能的计划给出了更多的选项。当你优化一个特殊查询时,了解一下是否去掉自查询可产生很大的差异。

示例

下面查询选择了pubs数据库中所有表的名字,以及每个表的聚集索引(如果存在)。如果没有聚集索引,表名仍然显示在列表中,在聚集索引列中显示为虚线。两个查询返回同样的结果集,但第一个使用了一个子查询,而第二个使用一个外连接时。比较Microsoft sql server(WINDOWS平台上强大的数据库平台)产生的查询计划:

sql server<font class=reblank  style=(WINDOWS平台上强大的数据库平台) SQL语句调优技巧(图一)" width="450" height="253" /> 

sql server<font class=reblank  style=(WINDOWS平台上强大的数据库平台) SQL语句调优技巧(图二)" width="450" height="235" /> 

不必更深探索,我们可以看到在CPU和总的实耗时间方面连接更快,仅需要子查询方案逻辑读的一半。此外,这两种情况伴随着相同的结果集,虽然排序的顺序不同,这是因为连接查询(由于它的GROUP BY子句)有一个隐含的ORDER BY:

sql server<font class=reblank  style=(WINDOWS平台上强大的数据库平台) SQL语句调优技巧(图三)" width="275" height="476" /> 

查看这个子查询方法展示的查询计划:

sql server<font class=reblank  style=(WINDOWS平台上强大的数据库平台) SQL语句调优技巧(图四)" width="431" height="333" /> 

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:SQL Server 引用

编辑录入:coldstar [复制链接] [打 印]
赞助商链接