gpt4 book ai didi

sql - Hive 查询效率

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:55:24 26 4
gpt4 key购买 nike

你能帮我解决一个 Hive 查询效率问题吗?我有两个针对同一个问题的查询。我只是不明白为什么一个比另一个快得多。如果您知道,请随时提供见解。欢迎任何信息!

问题:我正在尝试检查 Hive parquet 表中一堆变量的最小值。

查询:我尝试了如下两个查询:

查询 1

drop table if exists tb_1 purge;
create table if not exists tb_1 as
select 'v1' as name, min(v1) as min_value from src_tb union all
select 'v2' as name, min(v2) as min_value from src_tb union all
select 'v3' as name, min(v3) as min_value from src_tb union all
...
select 'v200' as name, min(v200) as min_value from src_tb
;

查询 2

drop table if exists tb_2 purge;
create table if not exists tb_2 as
select min(v1) as min_v1
, min(v2) as min_v2
, min(v3) as min_v3
...
, min(v200) as min_v200
from src_tb
;

结果:查询 2 比查询 1 快得多。完成第二个查询大约需要 5 分钟。我不知道查询 1 需要多长时间。但是在我提交第一个query后,甚至对query有反应都需要很长时间,我的意思是通常我提交一个query后,系统会开始分析并在终端提供一些编译信息。但是,对于我的第一个查询,在我提交之后,系统甚至不会对此使用react。所以我就杀了它。

你怎么看?提前谢谢你。

最佳答案

查询执行时间取决于您执行它的环境。

在 MSSQL 中

像您这样的一些人认为查询执行类似于他们在某些理论资源中看到的算法,但在实际情况下,它取决于其他事物。

例如,您的两个查询都有在表上执行的 SELECT 语句,乍一看,它们需要读取所有行,但数据库服务器必须分析该语句以确定最有效的方法提取请求的数据。这称为优化 SELECT 语句。执行此操作的组件称为查询优化器。查询优化器的输入包括查询、数据库模式(表和索引定义)和数据库统计信息。查询优化器的输出是一个查询执行计划,有时称为查询计划或仅称为计划。 (有关查询处理架构的更多信息,请参阅 this)

您可以通过阅读 this article 查看 MSSQL 中的执行计划我认为通过查看两个查询的执行计划,您会更好地理解。

编辑( hive )

Hive 提供了一个EXPLAIN 命令来显示查询的执行计划。该语句的语法如下:

EXPLAIN [EXTENDED|DEPENDENCY|AUTHORIZATION] query

Hive 查询被转换为一系列阶段。阶段的描述本身显示了一系列运算符以及与运算符关联的元数据。

请参阅LanguageManual Explain了解更多信息。

关于sql - Hive 查询效率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49039952/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com