vertica中groupby語句的優化

2022-04-07 12:57:01 字數 1364 閱讀 3673

vertica group by優化語句,先對語句進行explain 操作檢視預執行計畫,其中group by 分為 groupby pipelined 和 groupby hash,通過執行計畫可以清楚的看到vertica到底採用的那種執行方式,優化一般就是吧groupby hash優化為groupby pipelined

下面講一下官網舉得例子

create table sortopt (

a int not null,

b int not null,

c int,

d int

create projection sortopt_p (

a_proj,

b_proj,

c_proj,

d_proj )

as select * from sortopt

order by a,b,c

unsegmented all nodes;

insert into sortopt values(5,2,13,84);

insert into sortopt values(14,22,8,115);

insert into sortopt values(79,9,401,33);

第一種情況 group by a

group by a,b

group by b,a

group by a,b,c

group by c,a,b

如果是按照上面的這種group by 則使用的是groupby pipelined,因為group by 後的字段全部在projection中預排序 group by a,b,c,d

這種情況則是採用的groupby hash 不建議~

第二種情況

group by a,c

執行 按照groupby hash 因為a,c欄位沒有相鄰,如果是

group by a,c或者group by b,c則會按照groupby pipelined 執行

第三種情況

group by 之前有 where條件時

select a from tab where a = 10 group by b 此時按照 groupby pipelined

select a from tab where a = 10 group by c 此時按照 groupby hash 以為按照c排序的

處理的所有的 projectionn 列的列未出現在 where 子句等值條件中,如果上如改為select a from tab

where a = 10 and b=10 group by c 則會按照groupby pipelined 執行

通過以上3中情況的介紹,希望大家對vertica的group by有一定的理解。

Vertica 分頁查詢

最近用到vertica 分頁 但是 在網上一搜 什麼 都沒有 可能是因為這個問題太簡單了吧。希望我的這個能給跟我一樣的菜鳥一點幫助 vertica 分頁超級 好用 用的函式是 limit 和 offset 例如 select from test limit 5 offset 0 搜尋前五條資料 也可...

Vertica新增磁碟

本次實驗環境是在虛擬機器上 vmware 12 作業系統是centos 6.5 64位 1.首先停止節點上的vertica資料庫,具體方法有很多 admintools t stop node s 192.168.xx.xx admintools tool stop node hosts 192.16...

mysql中group by 用法簡介

sql語句group by 用法簡介 經常很多情況下,我們用來做統計的資料表都是無比雜亂的,凡是每一條資料都是無厘頭的往裡插入,但是我們在按照分類或者分組來顯示統計資料的時候,這個時候就要用到神奇的group by,如下 基本語法 select 欄位1 sum 欄位2 from 名 group by...