從 TPCH 測試學習效能優化技巧之 Q16

2021-09-29 18:59:22 字數 2151 閱讀 2880

q16語句查詢獲得能夠以指定的貢獻條件**零件的供貨商數量。可用於決定在訂單量大,任務緊急時,是否有充足的供貨商。

q16語句的特點是:帶有分組、排序、聚集、去重、not in子查詢操作並存的兩表連線操作。

oracle編寫的查詢sql語句如下:

select  /*+ parallel(n) */

p_brand,p_type,p_size,

count(distinct ps_suppkey) as supplier_cnt

from

partsupp,part

where

p_partkey = ps_partkey

and p_brand <> 'brand#21'

and p_type not like 'small%'

and p_size in (2, 15, 17, 23, 25, 41, 44, 45)

and ps_suppkey not in (

select

s_suppkey

from

supplier

where

s_comment like '%customer%complaints%'

group by

p_brand,

p_type,

p_size

order by

supplier_cnt desc,

p_brand,

p_type,

p_size;

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

指令碼執行時間,單位:秒

並行數124

812oracle

5734

231513

這個查詢是將partsupp用兩個外來鍵表part和supplier進行匹配過濾後再分組,分組時將用兩個外來鍵表字段。這時候採用前面所述的技巧,先將外來鍵表按條件過濾後,再將主表的關聯欄位與外來鍵表匹配並把匹配上的關聯字段轉換成外來鍵表的記錄指標,這樣匹配不上的記錄 可直接過濾掉,而且在後面分組運算時即可直接引用外來鍵表字段。

spl指令碼如下:a1

=12=now()

3>brand="brand#21"

4>type="small*"

5>sizes=[2,   15, 17, 23, 25, 41, 44, 45]

6>sizes.sort@o()

7=file(path+"part.ctx").create().cursor@m(p_partkey,p_brand,p_type,p_size;p_brand   != brand && !like(p_type,type) &&   sizes.pos@b(p_size)!=null;a1).fetch().derive@o().keys@i(p_partkey)

8=file(path+"supplier.ctx").create().cursor@m(s_suppkey;!like(s_comment,"*customer*complaints*");a1).fetch().keys@i(s_suppkey)

9=file(path+"partsupp.ctx").create().cursor@m(ps_partkey,ps_suppkey;ps_partkey:a7,ps_suppkey:a8;a1)

10=a9.groups@u(ps_partkey.p_brand:p_brand,ps_partkey.p_type:p_type,ps_partkey.p_size:p_size;icount(ps_suppkey):supplier_cnt)

11=a10.sort@o(supplier_cnt   :-1,p_brand,p_type,p_size)

12=now()

13=interval@s(a2,a12)

a7和a8分別讀來並過濾外來鍵表,a9建立游標同時做匹配和過濾。

注意a7中做in判斷時使用了pos@b,表示這裡將採用二分法。當in判斷的集合成員較多時,將成員先排序後使用二分法可以減少比較次數,從而提高效能。

指令碼執行時間,單位:秒

並行數124

812oracle

5734

2315

13spl組表

3926

1811

10本問題涉及資料量不大,spl的運算結果與sql差別也不大。

從 TPCH 測試學習效能優化技巧之 Q19

q19語句查詢得到對一些空運或人工運輸零件三個不同種類的所有訂單的總折扣收入。零件的選擇考慮特定品牌 包裝和尺寸範圍。q19語句的特點是 帶有聚集 in子查詢操作並存的三表連線操作。oracle編寫的查詢sql語句如下 select parallel n sum l extendedprice 1 ...

從 TPCH 測試學習效能優化技巧之 Q2

q2語句查詢獲得最小代價的供貨商。得到給定的區域內,對於指定的零件 某一型別和大小的零件 哪個 商能以最低的 它,就可以選擇哪個 商來訂貨。q2語句的特點是 帶有排序 聚集操作 子查詢並存的多表查詢操作。查詢語句沒有從語法上限制返回多少條元組,tpc h標準規定,查詢結果只返回前100行即可 通常依...

1 學習效能優化的要點

效能分析本質是找出應用或者系統的瓶頸並設法避免或者緩解它們,從而更高效的利用系統資源處理更多的請求。1 從應用負載的角度來說,直接影響產品終端的效能。隨著應用負載的增加,系統的資源公升高甚至到達極限。2 從系統資源視角出發,比如資源的使用率和飽和度等 1.選擇指標評估應用程式和系統的效能。比如cpu...