我读到过CTE比光标更好。但我找不到一个简单明了的例子来证明这一点。我是Sql Server2005的新手,为了理解它,我需要一个简单的示例,在这个示例中,我们通过CTE存储值并逐个处理它。
发布于 2010-12-09 19:18:09
如果使用游标,则行序列将逐个执行,因为它一次只提取一行。因此,当我们在具有更多行的表中使用游标时,需要花费更多的时间。
发布于 2012-07-21 23:20:19
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
https://stackoverflow.com/questions/4397247
复制相似问题