从 TPCH 测试学习性能优化技巧之 Q5

一、 查询要求

Q5语句查询得到通过某个地区零件供货商而获得的收入(收入按sum(l_extendedprice * (1 -l_discount))计算)统计信息。可用于决定在给定的区域是否需要建立一个当地分配中心。

Q5语句的特点是:带有分组、排序、聚集操作并存的多表连接查询操作。

二、 Oracle执行

Oracle编写的查询SQL语句如下:

select /*+ parallel(n) */

n_name,

sum(l_extendedprice * (1 - l_discount)) as revenue

from

customer,

orders,

lineitem,

supplier,

nation,

region

where

c_custkey = o_custkey

and l_orderkey = o_orderkey

and l_suppkey = s_suppkey

and c_nationkey = s_nationkey

and s_nationkey = n_nationkey

and n_regionkey = r_regionkey

and r_name = 'ASIA'

and o_orderdate >= date '1995-01-01'

and o_orderdate < date '1995-01-01' + interval '1' year

group by

n_name

order by

revenue desc;

其中/*+ parallel(n) */ 是Oracle的并行查询语法,n是并行数。

脚本执行时间,单位:秒

从 TPCH 测试学习性能优化技巧之 Q5

三、 SPL优化

优化原理和Q3类似,只是涉及的外键表更多一些。

SPL脚本如下:

从 TPCH 测试学习性能优化技巧之 Q5

这里大量使用了前面题目中说过的游标建立时过滤和将关联字段转换成外键表指针的技巧。

与Q3不大相同的是,最后用于分组的字段不是已经有序的L_ORDERKEY,所以不能再使用groups@o。

脚本执行时间,单位:秒

从 TPCH 测试学习性能优化技巧之 Q5


分享到:


相關文章: