T-SQL Optimization Tips (2): 限制数据规模

SQL Server执行的T-SQL返回的数据越少,用以完成该T-SQL占用的资源就越少。所以,T-SQL语句应该只返回需要的数据,这有利于提高SQL Server的整体性能:

  • 充分利用索引从而规避全表扫描;
  • 降低读取数据的I/O操作;
  • 为其它可能的SQL Server操作节约缓存;
  • 避免不必要的网络传输;
  • 减少无用数据为客户端带来的内存占用。

等等。

 

1)限制结果集的行数

在实际开发中,需要返回一个表中所有行的数据的操作是极少的,所以应该限制返回结果集的行数,WHERE子句、TOP运算符以及SET ROWCOUNT选项是可能的选择。值得注意的是,使用TOP运算符和SET ROWCOUNT选项时,在结果集的行数达到一定数量(由这两种选择的参数决定)后T-SQL就会中止,即后两种选择要比使用WHERE子句更具效率,但是显然WHERE子句应用的情境要更多。如果同时在T-SQL中使用了TOP运算符和SET ROWCOUNT选项,虽然画蛇添足,但也不致影响效率,优先级方面SET ROWCOUNT选项要比TOP运算符高。

 

2)限制结果集的列数

对于一个二维表结构来说,除了限制行数,就是限制列数了。除非所有列都是需要的,否则应当避免使用SELECT *语句选择数据。

 

另外,应该避免对视图进行SELECT操作,因为很多视图返回的数据可能要比我们需要的数据要多得多,更具效率的做法是绕过视图而直接从表中SELECT数据。

DOS & DONTS——
3、避免使用SELECT *;

[注意:为了引起注意,所有本系列总结的DOS & DONTS都是具有一定前提的,一般的前提是“除非必要”和“除非必要才不”。]


posted @ 2007-02-06 00:57  蜡人张  阅读(783)  评论(1编辑  收藏  举报