189 8069 5689

POSTGRESQL比ORACLE好在哪里

这篇文章将为大家详细讲解有关POSTGRESQL比ORACLE好在哪里,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

为浦江等地区用户提供了全套网页设计制作服务,及浦江网站建设行业解决方案。主营业务为成都网站设计、网站制作、浦江网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!

首先介绍一下这个表的情况,避免有闲言碎语说表结构特殊, 从图中看有这几个字段,region 字段是一个BIGINT 的数字自增列,country 列式MD5 随机的计算值,year是插入数据的时的系统时间,region_class是一个根据 region 的数字范围 进行归类的列,例如1000 内的region 是1 ,其他的是2   3 以此类推,其中也有NULL , 顺便说一句自动插入数据1千万这台8G 的破机器3.6秒就完成了。

POSTGRESQL比ORACLE好在哪里

  应用分组集

目的:通过region_class 来进行分组并且每组要求取最大的region 数。

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好在哪里

经过查看了执行计划,POSTGRESQL 启用了并行扫描

如果在计算中,我们在进行多个字段GROUP BY 时 希望的是举例 GROUP BY  1   2  的数据 一次性获取更多的统计数据 希望以此能获得 group by 1 2  + group by 1  + group 2 的数据,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)  

继续不使用索引,3892ms 完成了整体的计算

继续提高要求,目前需要 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好在哪里

如此就完事了,没有,难度还的继续。

我们在进行分组的时候,select 后面的  字段需要进行分割显示,例如

我统计  一车水果,通过水果的 好 或 坏来进行分类,但显示的时候,要对苹果,香蕉,芒果来分别显示他们的好 和坏的 总数量。

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好在哪里

依然是没有加索引。

这没有完,继续,在统计分析中有一个概念叫中位数概念,这个概念是抛弃所有数据的50%后,在做统计,当然也可以调整,抛弃更多的数据或留下更多的数据。

具体还是看下面的语句把,都完成了。

POSTGRESQL比ORACLE好在哪里

秒级完成。

窗口函数,这个POSTGRESQL 也不能放过,看看他能做些什么

1 OVER 

POSTGRESQL比ORACLE好在哪里

2 Partition by 

POSTGRESQL比ORACLE好在哪里

POSTGRESQL比ORACLE好在哪里

partition by 加条件也是OK 的。并且 partition by order by 也没有问题

POSTGRESQL比ORACLE好在哪里

么最后我们还可以进行

而我们最常用的就是对我们查询的记录进行重新的排序编号

POSTGRESQL比ORACLE好在哪里

当然 POSTGRESQL 在数据库处理方面的函数也是一大把 简单列举一些

LEAD()

LAG()

可以对数据进行差别对比使用,方便出一些常用的数据对比报表使用。

first_value()

nth_value()

last_value()

row_number()

函数等等

同时还可以创建自己的聚集,方便定制化的功能。

最后,为什么在整体的操作中都没有索引的出现,主要是由于POSTGRESQL的索引分类众多,很多是ORACLE 不具备的功能。使用高级索引功能由胜之不武的嫌疑。

关于“POSTGRESQL比ORACLE好在哪里”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。


文章题目:POSTGRESQL比ORACLE好在哪里
网页链接:http://jkwzsj.com/article/ispesg.html

其他资讯