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;


Teradata中排名和序列字段实现

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

Teradata 学习笔记5

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

teradata EXPLAIN 读懂关键字--读懂执行计划

**(–本文是个人学习和使用过程中的总结,如有错误欢迎指正 )** 对于teradata SQL级别的优化,使用EXPLAIN查看执行计划基本上是最直接也最好用的。 EXPLAIN 展示出来的内容重...

TeraData项目经验总结与回顾

TeraData项目总结 TeraData体系结构和处理机制 在物理布局上,Teradata系统主要包括三个部分:处理节点(Node)、用于节点间通信的内部高速互联(InterConnec...

Sql优化系列之(1)__where子句条件优化

1.为什么要进行SQL优化   系统优化中一个很重要的方面就是SQL语句的优化。对于海量数据,劣质SQL语句和优质SQL语句之间的速度差别可以达到上百倍,可见对于一个系统不是简单地能实现其功能就可,...

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

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

Teradata SQL Assistant工具导入与导出

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

teradata中的部分sql命令

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

Teradata SQL 笔记

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

MySQL怎样优化WHERE子句

where优化主要是在SELECT中,因为他们最主要是在那里使用,但是同样的优化也可被用于DELETE和UPDATE语句。 但请注意,下面的优化并不是完全的。MYSQL实施了许多优化,但我没时...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:teradata sql优化之qualify子句优化
举报原因:
原因补充:

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