CTE的例子证明它比Cursor更好

时间:2010-12-09 10:34:48

标签: sql-server sql-server-2005 cursor common-table-expression

我读过CTE比光标更好。但我无法找到可以证明这一点的简单明确的例子。我是Sql Server 2005的新手并且理解它我需要一个简单的例子,我们通过CTE存储值并逐个处理它。

2 个答案:

答案 0 :(得分:0)

如果使用Cursor,则逐行执行行序列,因为它一次只能获取一行。因此,在具有更多行的表中使用Cursor需要更多时间。

答案 1 :(得分:0)

CTE在递归方案中产生更快的结果。 CTE的结果被重复用于获得最终结果集。因此,既然您已经在CTE中使用了where子句或子查询,那么它肯定会显示性能提升。虽然游标的执行流是同步的(它逐个执行),但它必然会花费更多的时间。 参考:http://msdn.microsoft.com/en-us/library/ms190766(v=sql.105).aspx

请注意,在许多情况下,临时表也提供了比CTE更好的性能,所以你也应该试试临时表。
参考:http://social.msdn.microsoft.com/Forums/en/transactsql/thread/d040d19d-016e-4a21-bf44-a0359fb3c7fb