首页 > 解决方案 > 查看 cte 或 temp 表?

问题描述

我在暂存层(未编入索引)中有一个表,其中有近 1 亿行。在数据仓库层,我需要从这个表中选择一定数量的行并与另一个表连接,大约有5000万行,我现在使用cte。从这个 cte 开始,在与其他一些表连接之前再次执行一些聚合。所以在这里,如果使用视图而不是 cte 会发生什么。我无法测试运行它,因为它需要很多时间。

那么在一般方面,哪个在性能方面具有微弱优势?

ctetemp tableview?

任何帮助表示赞赏。

标签: sqlsql-serverperformance

解决方案


我认为您应该使用带有索引的本地(单#)临时表。因为首先您将从主表中获取数据。然后,您将应用一些聚合、循环和自定义逻辑。好处很少:-

  1. 首先,每当连接关闭时,本地临时表就会被删除。
  2. 正如您所说,您将获得数百万条记录,然后使用索引搜索速度会更快。
  3. 使用临时表并应用一些聚合不会给主表带来负担。

推荐阅读