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

cte和临时表哪个效率高?
之前我用cte执行很慢(多个cte)

我改成临时表后,速度提升了很多,这两个效率应该差不多吧?怎么会这样的?

------解决方案--------------------
LZ 递归的次数是否比较多啊。

------解决方案--------------------
不能環境有所不同,沒可比較性。


------解决方案--------------------
如果说CTE是写入内存,而临时表写入磁盘的话,那应该是CTE效率高一些.

------解决方案--------------------
通常用在遞歸,遞歸方法CTE佔優
------解决方案--------------------
百度一下看他们的比较吧
------解决方案--------------------
CET 可用于:

创建递归查询。有关详细信息,请参阅使用公用表表达式的递归查询。
在不需要常规使用视图时替换视图,也就是说,不必将定义存储在元数据中。
启用按从标量嵌套 select 语句派生的列进行分组,或者按不确定性函数或有外部访问的函数进行分组。
在同一语句中多次引用生成的表。

使用 CTE 可以获得提高可读性和轻松维护复杂查询的优点。查询可以分为单独块、简单块、逻辑生成块。之后,这些简单块可用于生成更复杂的临时 CTE,直到生成最终结果集。
------解决方案--------------------
哦.那也不是效率,是执行速度.
效率上比,要高一些.CTE用循环直接在公用表达式中就能进行了,而临时表做递归,要用带判断变量的循环,稍差一些.
------解决方案--------------------
探讨

如果说CTE是写入内存,而临时表写入磁盘的话,那应该是CTE效率高一些.