`
WindyQin
  • 浏览: 32517 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

vertica中group by 和join 语句的优化

 
阅读更多

vertica group by优化语句,先对语句进行explain 操作查看预执行计划,其中group by 分为 GROUPBY PIPELINED 和 GROUPBY HASH,通过执行计划可以清楚的看到vertica到底采用的那种执行方式,优化一般就是吧GROUPBY HASH优化为GROUPBY PIPELINED
下面讲一下官网举得例子

CREATE TABLE sortopt (
    a INT NOT NULL, 
    b INT NOT NULL,
    c INT,
    d INT
);
CREATE PROJECTION sortopt_p (
   a_proj,
   b_proj,
   c_proj,
   d_proj )
AS SELECT * FROM sortopt
ORDER BY a,b,c 
UNSEGMENTED ALL NODES;
INSERT INTO sortopt VALUES(5,2,13,84);
INSERT INTO sortopt VALUES(14,22,8,115);
INSERT INTO sortopt VALUES(79,9,401,33);
  • 第一种情况
  • GROUP BY a
    GROUP BY a,b
    GROUP BY b,a
    GROUP BY a,b,c
    GROUP BY c,a,b
    如果是按照上面的这种group by 则使用的是GROUPBY PIPELINED,因为group by 后的字段全部在projection中预排序
  • GROUP BY a,b,c,d
  • 这种情况则是采用的GROUPBY HASH 不建议~

  • 第二种情况
    GROUP BY a,c
    执行 按照GROUPBY HASH 因为a,c字段没有相邻,如果是
    GROUP BY a,c或者GROUP BY b,c则会按照GROUPBY PIPELINED 执行

  • 第三种情况

  • group by 之前有 where条件时

SELECT a FROM tab WHERE a = 10 GROUP BY b 此时按照 GROUPBY PIPELINED

SELECT a FROM tab WHERE a = 10 GROUP BY c 此时按照 GROUPBY HASH 以为按照c排序的
处理的所有的 Projectionn 列的列未出现在 where 子句等值条件中,如果上如改为SELECT a FROM tab
WHERE a = 10 and b=10 GROUP BY c 则会按照GROUPBY PIPELINED 执行

通过以上3中情况的介绍,希望大家对vertica的group by有一定的理解。

**> 关于join vertica会有两种执行方式 Merge Join 和Hash join ,建议关联是要走Merge join

执行Merge join的必要条件就是 关联的字段要在两个表中预排序,也就是要是两个表的order by 字段**

可以参考官网Avoiding GROUP BY HASH with Projection Design

<script type="text/javascript"> $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('<ul/>').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('<li/>').text(i)); }; $numbering.fadeIn(1700); }); }); </script>

分享到:
评论

相关推荐

    vertica中文手册(7.2)

    3. **子查询与视图在UPDATE和DELETE语句中的应用**: - 介绍如何在更新和删除操作中使用子查询和视图。 ### 机器学习 1. **机器学习的先决条件**: - 在进行机器学习预测分析之前所需满足的条件和准备工作。 2....

    SQL优化指导示例2.pdf

    根据提供的文件内容,我们可以了解到文档《SQL优化指导示例2.pdf》主要讨论了在Vertica数据库系统中如何进行SQL语句的优化。Vertica是一个面向列的高性能分析数据库,特别适合于处理大规模数据集。本文的知识点涉及...

    vertica 8.1 完整文档

    - 版本8.1.x引入了新的功能和改进,这些通常会体现在官方文档的特定章节中,如“Vertica 8.1.x New Features”部分。 2. **Vertica概念**: - 此部分通常涉及基础概念介绍,帮助新用户理解Vertica的架构、设计...

    Vertica_9.1.x完整文档

    “Analyzing Data”章节深入探讨了Vertica的数据分析能力,包括使用SQL进行数据查询、复杂查询优化、使用统计函数进行数据分析,以及如何利用Vertica的列式存储和分布式计算能力来提高分析效率。 “Flex Tables”...

    Vertica7.2.3 安装中文手册

    HP vertica 7.2.3 中文 安装 手册,希望对你有帮助 .

    vertica jdbc 驱动driver

    JDBC驱动是这个交互过程中的桥梁,将Java程序的SQL查询语句转换为Vertica数据库可以理解的语言。 首先,了解JDBC驱动的分类,它们通常分为四种类型:Type 1、Type 2、Type 3和Type 4。Vertica JDBC驱动属于Type 4,...

    vertica jdbc driver 驱动下载

    Vertica JDBC Driver是一款由Vertica公司提供的Java数据库连接器,用于在Java应用程序中与Vertica分析平台进行交互。它遵循Java Database Connectivity (JDBC) API标准,为开发人员提供了访问和操作Vertica数据库的...

    HP vertica 6.1 essential training

    5. **SQL查询优化**:深入理解SQL语法和查询优化器的工作原理,学习编写高效SQL语句,包括索引的创建和使用,查询计划的查看和调整。 6. **高级特性**:探索Vertica的高级功能,如智能压缩、自动统计信息更新、时间...

    vertica文档

    Vertica充分利用这一特性,优化了数据读取和分析的速度。 Vertica文档是学习和掌握这款数据库管理系统的必备资源,它涵盖了从安装、配置到日常操作的所有环节。其中,"HP_vertica-user-doc_7.0.x"这一文档版本,很...

    HP Vertica Essentials

    书中详细讲解了部署Vertica的过程,这对于数据库管理员和系统管理员来说是一个重要的技能。部署Vertica通常包括系统规划、节点安装、配置及初始化。Vertica提供了一个适合于大数据处理的分布式架构,这就意味着管理...

    vertica V11.1官方SQL开发指导文档 英文版

    《Vertica V11.1官方SQL开发指导文档》是为开发者提供的一份详尽的参考手册,专注于利用Vertica数据库高效管理和分析大量数据。该文档涵盖了多种SQL元素,包括关键词、运算符、表达式、谓词和提示,以及各种数据类型...

    vertica中Segmentation

    -----------------------------Vertica-数据库-------------------------------------- 1:对象名称(表名,字段名)可以长到128个字符; --sequence 序列 --unique 唯一的 ...

    Vertica_9.1文档

    此外,Vertica还提供了强大的扩展性,允许用户通过不同的方法增强数据库功能,例如使用Vertica on the Cloud可以在云环境中部署和使用Vertica,而与其他大数据生态系统组件如Apache Hadoop、Apache Kafka和Apache ...

    Introduction Vertica Architecture_Overview

    这意味着在查询处理过程中,数据不是立即物化成最终形式,而是在处理链中的某个点,根据查询需求进行压缩和转换,这样做可以进一步优化性能和提高效率。 4. 高级压缩技术:Vertica的高级压缩技术使得数据库能够有效...

    vertica windows客户端

    **标题:“Vertica Windows客户端”** ...综上所述,Vertica Windows客户端是针对Vertica MPP数据库系统的一个强大工具集,为企业提供了高效、便捷的数据管理和分析环境,尤其适合处理大规模数据的企业级应用。

    HP_Vertica数据库从入门到精通

    因其卓越的性能和高可靠性,Vertica数据库在大数据分析领域中备受关注。文档《HP_Vertica数据库从入门到精通》是一份学习指南,覆盖了从安装配置到管理维护的全方位内容,旨在为数据库爱好者、开发人员和数据库管理...

    惠普 vertica

    HP Vertica 作为一款高度优化的大数据分析平台,不仅具备高性能和高扩展性,而且还提供了丰富的功能和工具,使得用户能够更加轻松地管理和分析大规模数据。无论是对于需要处理大量数据的企业还是研究机构来说,HP ...

    Vertica_technology

    惠普公司随后推出了HP Vertica数据库,融入了惠普公司的产品线中,成为了一款在商业环境中广泛应用的分析型数据库产品。 总的来说,Vertica是一种为大数据处理而优化的关系型数据库管理系统,其设计初衷是应对...

    Vertica_9.0.x_Complete_Documentation

    《Vertica 9.0.x 完整文档》是一份详尽阐述Vertica数据库系统9.0.x版本的官方参考资料,旨在为用户、管理员、开发者和数据分析师提供全面的指导和帮助。这份文档包含了Vertica数据库的核心功能、安装部署、性能优化...

Global site tag (gtag.js) - Google Analytics