日期:2014-05-18  浏览次数:20606 次

为什么微软建议用 TOP N 来代替 SET ROWCOUNT ?
微软的SQL   2000的手册中注明,建议用TOP   N,而不要用SET   ROWCOUNT,这是为什么?谢谢!

另外,如果采用   TOP   N   的方式的话,这里的“N”必须是常量,而不能是变量。如果是变量的话,只能采用动态SQL语句,然后用EXEC的方式来执行,因此我想问的是,如果采用微软的建议,用动态SQL拼凑的语句和采用SET   ROWCOUNT的方式,哪种好些呢?谢谢!

------解决方案--------------------
TOP N
------解决方案--------------------
我常用的是Set ROWCOUNT 因为用习惯了.
你也可以用TOP n 既然建议是它我想它应该更好些.
------解决方案--------------------
2005可以TOP(@变量)了
------解决方案--------------------
TOP N 使用起来灵活方便多了,这就是好处

实际上 TOP N 和 SET ROWCOUNT 效率是一样的
------解决方案--------------------
MS的电话90909不0,你问问他们.
------解决方案--------------------
我估计是为了向后兼容,以后的版本可能会放弃SET ROWCOUNT。
------解决方案--------------------
MS的电话90909不0,你问问他们.

-------------------

我打了 空号
------解决方案--------------------
好高深的电话号码~
------解决方案--------------------
有时候用SET ROWCOUNT也很方便
------解决方案--------------------
2005可以TOP(@变量)
------解决方案--------------------
只能采用动态SQL语句,然后用EXEC的方式来执行

======

动态 sql 相对损失性能,因为需要即时编译