teradata sql优化之qualify子句优化

原创 2015年11月20日 16:17:57
teradata sql中,各子句的执行顺序为where->join->group by->qualify->select,优化的目的就是最小化I/O,所以确保每个步骤过滤掉尽可能多的记录是很重要的。
 
下面这个例子主要描述qualify对语句的影响:
CREATE VOLATILE MULTISET TABLE A10_tmp,NO log AS       --取area_id         
(
SELECT
                A.*
                ,b.area_id custom_area_id
FROM xx_asset_k a Left Join
xxx.OFR_ASSET_MKT_HIST_a b
 ON a.Asset_Row_Id = b.Asset_Row_Id
QUALIFY ROW_NUMBER() OVER(PARTITION BY b.Asset_Row_Id
ORDER BY Serv_Seq_Nbr DESC) = 1                             
) With data
PRIMARY INDEX (Asset_Row_Id)
 ON
COMMIT PRESERVE ROWS;
 
该语句中的qualify子句只引用了一个表xxx.OFR_ASSET_MKT_HIST_a,并且对于每个asset_row_id,都有1个到10多个Serv_Seq_Nbr,由于优化器先进行两表关联操作,这就会导致要关联的记录有很多的重复并产生更多的结果集。
 
所以,对于该语句的优化,只要改变执行计划确保优化器先对b表进行排重操作即可。
SELECT prodid, SUM(sales) AS sumsales,
    
RANK( ) OVER (ORDER BY sumsales DESC)
                          AS "Ranking"
FROM salestbl
GROUP BY 1
QUALIFY Ranking <= 3;


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

ROWNUMBER() OVER( PARTITION BY COL1 ORDER BY COL2)用法

ROWNUMBER() OVER( PARTITION BY COL1 ORDER BY COL2)用法      今天在使用多字段去重时,由于某些字段有多种可能性,只需根据部分字段进行去重...

Teradata中排名和序列字段实现

需求一:根据某字段产生排名字段:原表数据如下:sel statistics_dt,count_num from dwPDATA.fanxiaoliang_unittest;2009-01-02 420...

Teradata 学习笔记5

系统日历 SQL有非常有限的日期运算功能,对日期运算比较困难。因此,有必要开发更 复杂的基于时间的计算工具,这就是开发系统日历的原因。系统日历与用户自己定 义的日历相比,最重要的一点是性能提高。...

SQL优化-批量SQL之 BULK COLLECT 子句

BULK COLLECT 子句会批量检索结果,即一次性将结果集绑定到一个集合变量中,并从SQL引擎发送到PL/SQL引擎。通常可以在SELECT INTO、 FETCH INTO以及RETURNIN...

MySQL怎样优化WHERE子句

where优化主要是在SELECT中,因为他们最主要是在那里使用,但是同样的优化也可被用于DELETE和UPDATE语句。 但请注意,下面的优化并不是完全的。MYSQL实施了许多优化,但我没时...

Teradata SQL 笔记

HELP 帮助用户了解数据库中各种对象的结构 SHOW 帮助用户了解某种对象的定义,即返回其DDL语句 EXPLAIN 返回一个SQL语句经优化处理后的执行步骤,注意并未真正执行 FALLBACK 对...

Teradata SQL 笔记

http://cuishen.iteye.com/blog/638968 HELP 帮助用户了解数据库中各种对象的结构  SHOW 帮助用户了解某种对象的定义,即返回其DDL语句  ...

teradata中的部分sql命令

HELP 帮助用户了解数据库中各种对象的结构 SHOW 帮助用户了解某种对象的定义,即返回其DDL语句 EXPLAIN 返回一个SQL语句经优化处理后的执行步骤,注意并未真正执行 FALLBAC...

Teradata SQL Assistant工具导入与导出

1.使用Teradata SQL Assistant工具导入与导出          当你得到一个EXCEL平面文件数据的时候,你就可以利用Teradata SQL Assistant工具导入导...

MySQL学习笔记之十九 优化之where子句

一些小技巧:
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)