在这个优秀的SO questionCTE
中,讨论了和之间sub-queries
的差异。
我想具体问一下:
在什么情况下,以下每种情况更有效/更快?
- CTE
- 子查询
- 临时表
- 表变量
传统上,我temp tables
在开发中使用了很多stored procedures
——因为它们看起来比许多相互交织的子查询更具可读性。
Non-recursive CTE
s 很好地封装了数据集,并且可读性很好,但是在特定情况下可以说它们总是会表现得更好吗?还是必须总是摆弄不同的选项才能找到最有效的解决方案?
编辑
最近有人告诉我,就效率而言,临时表是一个不错的首选,因为它们具有相关的直方图,即统计信息。