溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

POSTGRESQL比ORACLE好在哪里

發(fā)布時間:2021-11-26 09:35:56 來源:億速云 閱讀:459 作者:小新 欄目:大數(shù)據(jù)

這篇文章將為大家詳細講解有關POSTGRESQL比ORACLE好在哪里,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

首先介紹一下這個表的情況,避免有閑言碎語說表結構特殊, 從圖中看有這幾個字段,region 字段是一個BIGINT 的數(shù)字自增列,country 列式MD5 隨機的計算值,year是插入數(shù)據(jù)的時的系統(tǒng)時間,region_class是一個根據(jù) region 的數(shù)字范圍 進行歸類的列,例如1000 內的region 是1 ,其他的是2   3 以此類推,其中也有NULL , 順便說一句自動插入數(shù)據(jù)1千萬這臺8G 的破機器3.6秒就完成了。

POSTGRESQL比ORACLE好在哪里

  應用分組集

目的:通過region_class 來進行分組并且每組要求取最大的region 數(shù)。

select region_class,max(region) as max_in from kill_O where region < 100000 and region_class is not null group by ROLLUP (region_class);  耗時 181ms  沒有任何索引

POSTGRESQL比ORACLE好在哪里

加大難度:本次查詢其實沒有任何意義,僅僅是為了加大查詢的難度,依然沒有任何索引。在多字段分組,并且進行排序,時間1009ms

select region_class,sum(region) as sum_in from kill_O where region < 100000 and region_class is not null group by ROLLUP (region_class,region) order by region_class

POSTGRESQL比ORACLE好在哪里

經(jīng)過查看了執(zhí)行計劃,POSTGRESQL 啟用了并行掃描

如果在計算中,我們在進行多個字段GROUP BY 時 希望的是舉例 GROUP BY  1   2  的數(shù)據(jù) 一次性獲取更多的統(tǒng)計數(shù)據(jù) 希望以此能獲得 group by 1 2  + group by 1  + group 2 的數(shù)據(jù),POSTGRESQL 可以做嗎?YES

select region_class,sum(region) as sum_in from kill_O

where region < 100000 and region_class is not null 

group by cube (region_class,region)  

繼續(xù)不使用索引,3892ms 完成了整體的計算

繼續(xù)提高要求,目前需要 GROUP (1 2) ROLLUP+ GROUP 1  ROLLUP  + GROUP 2   ROLLUP

 POSTGRESQL 可以做嗎,YES

select region_class,sum(region) as sum_in from kill_O

where region < 100000 and region_class is not null 

GROUP BY GROUPING SETS (region_class,region) 

不添加索引的情況下,2113ms 完成

POSTGRESQL比ORACLE好在哪里

如此就完事了,沒有,難度還的繼續(xù)。

我們在進行分組的時候,select 后面的  字段需要進行分割顯示,例如

我統(tǒng)計  一車水果,通過水果的 好 或 壞來進行分類,但顯示的時候,要對蘋果,香蕉,芒果來分別顯示他們的好 和壞的 總數(shù)量。

POSTGRESQL 能做這樣的事情嗎 YES

select region_class,

sum(region) filter(where year >'2019-04-19 10:43:33' and year < '2019-04-19 10:44:33' ) 

from kill_O

where region < 100000 and region_class is not null 

group by (region_class);   191ms 完成

POSTGRESQL比ORACLE好在哪里

依然是沒有加索引。

這沒有完,繼續(xù),在統(tǒng)計分析中有一個概念叫中位數(shù)概念,這個概念是拋棄所有數(shù)據(jù)的50%后,在做統(tǒng)計,當然也可以調整,拋棄更多的數(shù)據(jù)或留下更多的數(shù)據(jù)。

具體還是看下面的語句把,都完成了。

POSTGRESQL比ORACLE好在哪里

秒級完成。

窗口函數(shù),這個POSTGRESQL 也不能放過,看看他能做些什么

1 OVER 

POSTGRESQL比ORACLE好在哪里

2 Partition by 

POSTGRESQL比ORACLE好在哪里

POSTGRESQL比ORACLE好在哪里

partition by 加條件也是OK 的。并且 partition by order by 也沒有問題

POSTGRESQL比ORACLE好在哪里

么最后我們還可以進行

而我們最常用的就是對我們查詢的記錄進行重新的排序編號

POSTGRESQL比ORACLE好在哪里

當然 POSTGRESQL 在數(shù)據(jù)庫處理方面的函數(shù)也是一大把 簡單列舉一些

LEAD()

LAG()

可以對數(shù)據(jù)進行差別對比使用,方便出一些常用的數(shù)據(jù)對比報表使用。

first_value()

nth_value()

last_value()

row_number()

函數(shù)等等

同時還可以創(chuàng)建自己的聚集,方便定制化的功能。

最后,為什么在整體的操作中都沒有索引的出現(xiàn),主要是由于POSTGRESQL的索引分類眾多,很多是ORACLE 不具備的功能。使用高級索引功能由勝之不武的嫌疑。

關于“POSTGRESQL比ORACLE好在哪里”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。

AI