首页 > 解决方案 > SQL 查询时间

问题描述

使用 select as 语句创建表或仅运行 select 语句是否需要更多时间?时差太大还是可以忽略不计?

例如之间

create table a
as select * from b
where c = d;

select * from b
where c = d;

哪一个应该跑得更快,时间差可以忽略不计?

标签: sqlselect

解决方案


创建表需要更多时间。还有更多开销。如果您查看数据库的元数据,您会发现很多表或视图包含有关表的信息。特别是需要存储表名和列名。

也就是说,数据处理工作非常相似。但是,将结果集存储在永久存储中而不是存储在结果集所需的数据结构中可能会产生开销。事实上,结果集可能永远不需要存储在“磁盘上”(即永久地)。但是对于创建表,这是必需的。

根据数据库的不同,这两个查询也可能进行不同的优化。查询可能会被优化以尽可能快SELECT地返回第一行。查询可能会被优化以尽可能快CREATE地返回所有行。此外,SELECT如果您的数据库和界面在第一次出现时开始返回行,那么它可能看起来更快。

我应该指出,在大多数情况下,开销可能并不明显。create table但是,您可能会在语句中遇到其他错误,而仅使用select. 例如,该表可能已经存在。或者重复的列名可能会造成问题(尽管某些数据库也不允许在结果集中出现重复的列名)。


推荐阅读