SELECTINTO与WITHAS:在临时表方法中谁更快?

我对这两种结构有一点经验。使用一个或另一个使用临时表是否有性能改进?

  • 我知道这SELECT INTO会创建一个在查询后仍然存在并在一段时间后被删除的表。几秒钟后使用相同的查询时出现一些问题(SQL 错误 [2714] [S0001]: 数据库中已经有一个名为 #XXXXX 的对象)。因此,如果您以不同的方法使用该临时表进行大量查询,则无需再次创建该表。这是一个可以由不同用户在存在时使用的表,包括在内。
  • WITH AS 只需在当前查询中创建临时表,然后立即删除。

我没有更多信息。

回答

你混淆了两个概念。

SELECT INTO创建一个新表。那可以是临时表或永久表。但是该已创建。

WITH定义在单个查询中使用的公共表表达式(CTE)。这不是一张“桌子”。它只是一个子查询,可能会也可能不会具体化为临时表(实际上,SQL Server 通常不会具体化 CTE)。

SELECT INTO当你想要一张真正的桌子时,你可以使用。一些原因是:

  • 在多个查询之间共享数据。
  • 收集正确的统计信息以帮助查询优化器。
  • 添加索引以提高后续查询性能。

当您需要查询中的命名子查询时,您可以使用 CTE。如果您在两者之间进行选择,您可能想从 CTE 开始。


以上是SELECTINTO与WITHAS:在临时表方法中谁更快?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>