sql - SQL 查询时间
问题描述
使用 select as 语句创建表或仅运行 select 语句是否需要更多时间?时差太大还是可以忽略不计?
例如之间
create table a
as select * from b
where c = d;
和
select * from b
where c = d;
哪一个应该跑得更快,时间差可以忽略不计?
解决方案
创建表需要更多时间。还有更多开销。如果您查看数据库的元数据,您会发现很多表或视图包含有关表的信息。特别是需要存储表名和列名。
也就是说,数据处理工作非常相似。但是,将结果集存储在永久存储中而不是存储在结果集所需的数据结构中可能会产生开销。事实上,结果集可能永远不需要存储在“磁盘上”(即永久地)。但是对于创建表,这是必需的。
根据数据库的不同,这两个查询也可能进行不同的优化。查询可能会被优化以尽可能快SELECT
地返回第一行。查询可能会被优化以尽可能快CREATE
地返回所有行。此外,SELECT
如果您的数据库和界面在第一次出现时开始返回行,那么它可能看起来更快。
我应该指出,在大多数情况下,开销可能并不明显。create table
但是,您可能会在语句中遇到其他错误,而仅使用select
. 例如,该表可能已经存在。或者重复的列名可能会造成问题(尽管某些数据库也不允许在结果集中出现重复的列名)。
推荐阅读
- cypress - 按顺序执行 Cypress 客户端命令
- c - C uing dev c++中的指针问题
- sparql - 使用 Hermit 和 ONT-API 和 SPARQL 查询
- javascript - 如何包装自定义 json:api 客户端并使调用流畅和异步(非 ES6)
- python - 有谁知道如何在 python 中将随机图与旅行商问题算法放在一起?
- r - r 中 WDI、wb_stats SP.POP.TOTL 指标的问题
- python-3.x - 如何使用python将iso 8859-1转换为简单字母
- logging - 多个文件的日志级别上的 Serilog.Expressions SubLogger
- mql5 - 如何在 MQL5 中进行日期时间运算?
- excel - 如何在表格中查找每个字符串并仅显示一次?