POSTGRESQL比ORACLE好在哪里

发布时间:2021-11-26 09:35:56 作者:小新
来源:亿速云 阅读:443

这篇文章将为大家详细讲解有关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好在哪里”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

推荐阅读:
  1. Oracle迁移到Postgresql的方法
  2. ORACLE Postgresql中文排序

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

oracle postgresql

上一篇:怎么理解Git基本操作

下一篇:C#如何实现基于Socket套接字的网络通信封装

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》