sql - 在什么用例中您会使用 CTE 而不是临时表
问题描述
我几乎在每种情况下都使用临时表,当人们向我提起 CTE 时,它通常是 CTE 的用途。CTE 优于其他方法的用途是什么?至于可读性,CTE 现在是可维护代码的最佳实践吗?
解决方案
临时表会产生写入和读取数据的开销。这样做有两个好处:
- 它们可以用于多个查询。
- 优化器对它们有很好的信息,即大小。
另一方面,CTE仅在一个查询中可用——这有时很方便。他们可以简化单个查询——并将所有逻辑放在一起。与子查询不同,CTE 可以在查询中多次引用。与临时表不同,优化器可以找出将逻辑合并到查询中的最佳方式。
CTE 还具有临时表无法做到的一件事:递归 CTE 需要在脚本语言中循环。
推荐阅读
- javascript - 如何在输入数据列表中设置默认值并且仍然有下拉菜单?
- android - Android camera2 将图像时间戳与 CaptureResult SENSOR_TIMESTAMP 进行比较
- c# - 如何使用现有内容格式化 RichTextBox
- javascript - 使用 Stl Viewer Javascript 插件无法在 ASP.NET Core MVC 网页中呈现 3D 模型
- java - 无法从您发送到 GEOMETRY 字段的数据中获取几何对象:Hibernate Spatial + Mysql
- javascript - 从 NodeJS 服务器发现 MongoDB 服务器 IP
- sql - Oracle 分析函数,来自最后但 1 行的数据
- ssh - 是否可以仅使用 ppk 或 pem 文件通过 ssh 进入服务器?
- sql-server - 运行 Invoke-SqlCmd 时传递字符串参数?
- python - 如何在 Pandas 中将值从 1 列分配给另一列并发出警告