温馨提示×

温馨提示×

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

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

PostgreSql 复杂的查询该怎么分析

发布时间:2021-12-14 16:57:55 来源:亿速云 阅读:166 作者:柒染 栏目:大数据

本篇文章为大家展示了PostgreSql 复杂的查询该怎么分析 ,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

永久了MYSQL 可能会忘记什么是复杂的查询,每种数据库有自己的特点,POSTGRESQL 是一个 OLAP + OLTP 兼得的数据库,所以postgresql 会面对复杂的查询,而复杂的查询怎么来看,分析这就是面临的问题。

我们以下面的例子来看看怎么分析

with data_s as (

select cj.customer_id,cij.city_id,sum(pj.amount) as all_amount

from customer as cj

inner join payment as pj on pj.customer_id = cj.customer_id

inner join address as aj on aj.address_id = cj.address_id

inner join city as cij  on cij.city_id = aj.city_id

group by cj.customer_id,pj.amount,cij.city_id

limit 50)

select cus.first_name || ' ' || cus.last_name as full_name,cw.all_amount

from customer as cus

inner join data_s as cw on cw.customer_id = cus.customer_id

PostgreSql 复杂的查询该怎么分析

与大部分数据库一致的查阅执行计划的方式,我们从缩进最里面的开始

首先

PostgreSql 复杂的查询该怎么分析

seq scan on public.customer.cj 说明是要全表扫描这个表,启动成本是 0 cost-0.00 这个节点的成本是14.99  评估出需要扫描的夯实 599行,行的列数是6 ,实际上执行总,启动成本是0.021  节点的成本是10.931  

其实POSTGRESQL 展示的执行计划以及成本是很详细和好看的,但随着语句的复杂度,则展现的整体执行计划看上去就没有那么方便了。这就是今天要说的,怎么嫩更方便的看。

实际上 PG 官方的pgadmin,可以很好的将要执行的语句变成图形化的方式来展示执行的计划,看到下面的图,用SQL SERVER 的小伙伴可能会比较熟悉,虽然么有SQL SERVER 的图形化 SSMS 的功能多,但分析来说已经很不错了。配合非界面化的文字来协同分析,可以达到比较好的结果。

PostgreSql 复杂的查询该怎么分析

PostgreSql 复杂的查询该怎么分析

当然这样看估计还是有很多人不会太满意,那下面在看看这样的方式能否帮助你

PostgreSql 复杂的查询该怎么分析

PostgreSql 复杂的查询该怎么分析

可以想象,看到上面的图,有人已经觉得有点意思,想继续了解一下。首先上面的图是将你的执行计划,上传到某个网站得到的效果。

他可以将你的执行结合变为更适合的分析的方式,展示,并且会给你一个汇总,尤其当得到一个几十行,甚至上百行的执行计划的时候,这样的汇总和展示的方式,可能会让焦躁的你,稍微的冷却一下。 

下面汇总的图,可以让我们大致迅速了解我们的表有几个seq scan 时间是多少,扫描了表的百分之多少。我想如果这个结果还不能让你满意的话...

PostgreSql 复杂的查询该怎么分析

那就的祭出最终的神器,可以看到上面的页面,通过这个页面可以将整体预计执行的顺序,以及其中那段是哪个预计行程的,给你一个直观的反映。

有了以上的工具,其实可以应付大多数的比较困难的复杂的语句。

下面是这两个能将explain的执行计划进行详细解释的网站。

https://explain.depesz.com/

http://tatiyants.com/pev/#/plans/new

其中第二个网站,需要将explain 输出为 Json的格式,配合语句,进行展示及具体如何获得 json 的方式的。

1  通过 explain (format josn)的方式来获得 JSON 的执行计划

2  通过psql -qAtd 数据库 -f 执行语句 >  文件的方式来获得 json 执行计划的输出文件

上述内容就是PostgreSql 复杂的查询该怎么分析 ,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。

向AI问一下细节

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

AI