sql - 查看 cte 或 temp 表?
问题描述
我在暂存层(未编入索引)中有一个表,其中有近 1 亿行。在数据仓库层,我需要从这个表中选择一定数量的行并与另一个表连接,大约有5000万行,我现在使用cte。从这个 cte 开始,在与其他一些表连接之前再次执行一些聚合。所以在这里,如果使用视图而不是 cte 会发生什么。我无法测试运行它,因为它需要很多时间。
那么在一般方面,哪个在性能方面具有微弱优势?
cte
或temp table
或view
?
任何帮助表示赞赏。
解决方案
我认为您应该使用带有索引的本地(单#)临时表。因为首先您将从主表中获取数据。然后,您将应用一些聚合、循环和自定义逻辑。好处很少:-
- 首先,每当连接关闭时,本地临时表就会被删除。
- 正如您所说,您将获得数百万条记录,然后使用索引搜索速度会更快。
- 使用临时表并应用一些聚合不会给主表带来负担。
推荐阅读
- ios - 在 CollectionView 中估计单元格高度的更快方法
- java - String.compareIgnoreCase 返回错误结果
- mysql - MySQL 在 where 子句中不等于 >= '' 吗?哪个表现更好?
- tomcat - 升级后Alfresco登录问题
- java - 如何将 JFreeChart 的图形保存在 PNG 图像中?
- neo4j - neo4j 事务日志未修剪
- javascript - 如何在 javascript 上的按钮单击事件中添加一些新内容?
- python - 如何使小部件(球)从屏幕底部开始 - Python/Kivy
- npm - 无法通过 npm 安装 tensorflow.js
- .net - 什么是数组
^ 参数?为什么我们将它传递给 main()?