POSTGRESQL比ORACLE好在哪里

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

為浦江等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及浦江網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、浦江網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!

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

POSTGRESQL比ORACLE好在哪里

  應(yīng)用分組集

目的:通過region_class 來進(jìn)行分組并且每組要求取最大的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);  耗時(shí) 181ms  沒有任何索引

POSTGRESQL比ORACLE好在哪里

加大難度:本次查詢其實(shí)沒有任何意義,僅僅是為了加大查詢的難度,依然沒有任何索引。在多字段分組,并且進(jìn)行排序,時(shí)間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í)行計(jì)劃,POSTGRESQL 啟用了并行掃描

如果在計(jì)算中,我們?cè)谶M(jìn)行多個(gè)字段GROUP BY 時(shí) 希望的是舉例 GROUP BY  1   2  的數(shù)據(jù) 一次性獲取更多的統(tǒng)計(jì)數(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 完成了整體的計(jì)算

繼續(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ù)。

我們?cè)谶M(jìn)行分組的時(shí)候,select 后面的  字段需要進(jìn)行分割顯示,例如

我統(tǒng)計(jì)  一車水果,通過水果的 好 或 壞來進(jìn)行分類,但顯示的時(shí)候,要對(duì)蘋果,香蕉,芒果來分別顯示他們的好 和壞的 總數(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)計(jì)分析中有一個(gè)概念叫中位數(shù)概念,這個(gè)概念是拋棄所有數(shù)據(jù)的50%后,在做統(tǒng)計(jì),當(dāng)然也可以調(diào)整,拋棄更多的數(shù)據(jù)或留下更多的數(shù)據(jù)。

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

POSTGRESQL比ORACLE好在哪里

秒級(jí)完成。

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

1 OVER 

POSTGRESQL比ORACLE好在哪里

2 Partition by 

POSTGRESQL比ORACLE好在哪里

POSTGRESQL比ORACLE好在哪里

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

POSTGRESQL比ORACLE好在哪里

么最后我們還可以進(jìn)行

而我們最常用的就是對(duì)我們查詢的記錄進(jìn)行重新的排序編號(hào)

POSTGRESQL比ORACLE好在哪里

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

LEAD()

LAG()

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

first_value()

nth_value()

last_value()

row_number()

函數(shù)等等

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

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

關(guān)于“POSTGRESQL比ORACLE好在哪里”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。

當(dāng)前文章:POSTGRESQL比ORACLE好在哪里
標(biāo)題URL:http://muchs.cn/article36/ispesg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標(biāo)簽優(yōu)化網(wǎng)站改版、小程序開發(fā)網(wǎng)站內(nèi)鏈、品牌網(wǎng)站建設(shè)網(wǎng)站排名

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化