從 TPCH 測試學習性能優化技巧之 Q7

一、 查詢要求

Q7語句是查詢從供貨商國家與銷售商品的國家之間通過銷售獲利情況的查詢。此查詢確定在兩國之間貨運商品的量用以幫助重新談判貨運合同。

Q7語句的特點是:帶有分組、排序、聚集、子查詢操作並存的多表查詢操作。子查詢的父層查詢不存在其他查詢對象,是格式相對簡單的子查詢。

二、 Oracle執行

Oracle編寫的查詢SQL語句如下:

select /*+ parallel(n) */

supp_nation,

cust_nation,

l_year,

sum(volume) as revenue

from

(

select

n1.n_name as supp_nation,

n2.n_name as cust_nation,

extract(year from l_shipdate) as l_year,

l_extendedprice * (1 - l_discount) as volume

from

supplier,

lineitem,

orders,

customer,

nation n1,

nation n2

where

s_suppkey = l_suppkey

and o_orderkey = l_orderkey

and c_custkey = o_custkey

and s_nationkey = n1.n_nationkey

and c_nationkey = n2.n_nationkey

and (

(n1.n_name = 'CHINA' and n2.n_name = 'RUSSIA')

or (n1.n_name = 'RUSSIA' and n2.n_name = 'CHINA')

)

and l_shipdate between date '1995-01-01' and date '1996-12-31'

) shipping

group by

supp_nation,

cust_nation,

l_year

order by

supp_nation,

cust_nation,

l_year;

其中/*+ parallel(n) */ 是Oracle的並行查詢語法,n是並行數。

腳本執行時間,單位:秒

從 TPCH 測試學習性能優化技巧之 Q7

三、 SPL優化

中間子查詢的運算和Q3類似,優化原理也類似,這裡就不再贅述。

SPL腳本如下:

從 TPCH 測試學習性能優化技巧之 Q7

注意nation表數據A5在A6和A7分別使用了一次,用於外鍵匹配過濾,這和SQL的別名寫法不同。

腳本執行時間,單位:秒

從 TPCH 測試學習性能優化技巧之 Q7


分享到:


相關文章: