GP SQL 优化
1、收集统计信息
vacuum full analyze ZCXT.ZCOT_PS_PROJECT;
2、检查表的数据量分布
select gp_segment_id,count(*) from fact_table group by gp_segment_id;
3、表结构上
建议创建表的时候,分布键放在最前面,接着是分区键,接着是大字节的字段到小字节。
4、分布键
把连接键定义为数据分布键(如果多个列作为数据分布键,他们应该都出现在连接中,否则还是会造成无效广播),常用于join和where条件的列作为分布键,最典型的例子是两张做join的表都用需要连接的列作为分布键。
5、写法上
(1)、不用distinct,改用group by
(2)、UNION操作应该用UNION ALL加GROUP BY的方式进行改写
(3)、一般不使用Index,索引的操作不超过5%
(4)关于or语法gp的OR语法效果很差,用
in (select 1 union all select 2) 代替 in (select 1 from t1) or in (select 2 from t2),
exists (select 1 union all select 2) 代替 exists (select 1 from t1) or exists (select 2 from t2),
特别是子查询中,括号内引用括号外的字段作为条件的情况,这种时候,同一张表多次引入来改写OR语句效率都比 or高
(5)关于并列查询
不要使用 (column_1,column_2) in (select c1,c2),而采用 exists,单字段没关系,2个及以上字段效率可能存在问题
6、执行计划上避免大表的广播
执行计划广播会显示 broadcast
GreenPlum有三种数据的移动操作,会体现在执行计划上
(1)、BroadCast Motion(N:N),广播数据。每个节点向其他节点广播需要发送的数据。
(2)、Redistribute Motion(N:N),重新分布数据。利用join的列值hash不同,将筛选后的数据在其他segment重新分布
(3)、Gather Motion(N:1),聚合汇总数据,每个节点将join后的数据发到一个单节点上,通常是发到主节点master。
GP SQL 优化的更多相关文章
- SQL优化(三)—— 索引、explain分析
SQL优化(三)—— 索引.explain分析 一.什么是索引 索引是一种排好序的快速查找的数据结构,它帮助数据库高效的查询数据 在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据 ...
- SQL优化案例—— RowNumber分页
将业务语句翻译成SQL语句不仅是一门技术,还是一门艺术. 下面拿我们程序开发工程师最常用的ROW_NUMBER()分页作为一个典型案例来说明. 先来看看我们最常见的分页的样子: WITH CTE AS ...
- sql 优化
1.选择最有效率的表名顺序(只在基于规则的优化器中有效): oracle的解析器按照从右到左的顺序处理 from 子句中的表名,from子句中写在最后的表(基础表driving table)将被最先处 ...
- SQL 优化总结
SQL 优化总结 (一)SQL Server 关键的内置表.视图 1. sysobjects SELECT name as '函数名称',xtype as XType FROM s ...
- (转)SQL 优化原则
一.问题的提出 在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出SQL语句各种写法的性能优劣,但是如果将应用 系统提交实际应用后,随着数据库中数据的增加,系 ...
- sql优化阶段性总结以及反思
Sql优化思路阶段性心得: 这段时间的优化做了好几个案例,其实有很多的类似点,都是好几张大表的相互连接,然后执行长达好几个小时,甚至都跑不出来. 自己差不多的思路就是Parallel full tab ...
- mysql sql优化实例
mysql sql优化实例 优化前: pt-query-degist分析结果: # Query 3: 0.00 QPS, 0.00x concurrency, ID 0xDC6E62FA021C85B ...
- SQL优化技巧
我们开发的大部分软件,其基本业务流程都是:采集数据→将数据存储到数据库中→根据业务需求查询相应数据→对数据进行处理→传给前台展示.对整个流程进行分析,可以发现软件大部分的操作时间消耗都花在了数据库相关 ...
- ORACLE常用SQL优化hint语句
在SQL语句优化过程中,我们经常会用到hint,现总结一下在SQL优化过程中常见Oracle HINT的用法: 1. /*+ALL_ROWS*/ 表明对语句块选择基于开销的优化方法,并获得最佳吞吐量, ...
随机推荐
- glance image-create
glance image-create
- 6、html的body内标签之超链接
一.超链接 <a href="https://www.baidu.com" target="_blank">某度</a> #target ...
- sql之函数及流程控制
date_format函数
- window.location js截取url地址
window.location方法的说明 原文链接: http://jiantian.org/index.php?page_id=2 window.location.href 整个URl字符串(在浏览 ...
- flex设置默认字体为微软雅黑
必须使用英文名称 Microsoft YaHei 否则有些系统不识别
- MFC——ComBox用法大全
Combo Box (组合框)控件很简单,可以节省空间.从用户角度来看,这个控件是由一个文本输入控件和一个下拉菜单组成的.用户可以从一个预先定义的列表里选择一个选项,同时也可以直接在文本框里面输入文本 ...
- HDU1829【种类并查集】
题意: 检验给出条件是否有同性恋. 思路: 条件并查集. 还是一个类似的前缀和,sum[x]是x到根这段路径上的和,根一定是坐标越小的, 那么如果说对于同类(同一个集合)的判断就sum[a]是否等于s ...
- 自定义Mybatis返回类型及注意事项
一.自定义返回拦截器package com.yaoex.crm.service.util; import org.apache.ibatis.session.ResultContext;import ...
- bzoj3453: tyvj 1858 XLkxc(拉格朗日插值)
传送门 \(f(n)=\sum_{i=1}^ni^k\),这是自然数幂次和,是一个以\(n\)为自变量的\(k+1\)次多项式 \(g(n)=\sum_{i=1}^nf(i)\),因为这东西差分之后是 ...
- [Xcode 实际操作]一、博主领进门-(4)设置项目的属性
目录:[Swift]Xcode实际操作 本文将演示如何设置项目的属性. 点击项目名称[DemoApp],打开项目信息面板. [Identity识别]设置区域 [Display Name]:DemoAp ...