teradata sql优化之qualify子句优化
发布日期:2021-07-29 11:13:43
浏览次数:1
分类:技术文章
本文共 772 字,大约阅读时间需要 2 分钟。
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;
转载地址:https://blog.csdn.net/thy822/article/details/49948289 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年03月26日 00时51分34秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
【Android】 常用的Intent
2019-04-26
Android中AsyncTask的简单用法
2019-04-26
【Android】 Android中Log调试详解
2019-04-26
【Android】Android中WIFI开发总结(二)
2019-04-26
【Android】Android之WiFi开发应用示例
2019-04-26
【Android】 Android adb常见问题整理
2019-04-26
【Android】 Android体系结构图
2019-04-26
【Android】 Android中spinner下拉列表的使用
2019-04-26
说说在 python 中,如何删除左右两边不需要的字符
2019-04-26
说说如何管理 Spring Boot 中的起步依赖
2019-04-26
说说如何在 Linux 中,新建账号
2019-04-26
说说如何在 linux 中搭建 FTP 服务
2019-04-26
说说如何在 Python 的正则表达式中使用分组
2019-04-26
说说 Python 正则表达式的匹配类型
2019-04-26
说说 Python 的贪心和非贪心匹配策略
2019-04-26
说说在 Python 中,如何找出所有字符串匹配
2019-04-26
说说 Python 正则表达式中的那些字符类别码
2019-04-26
说说 Spring Boot 的条件化注解
2019-04-26
说说如何使用 Python 在 word 中创建表格
2019-04-26
Python 基础知识考题与解答(2020 版)
2019-04-26