前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PostgreSql 复杂的查询,我可怎么分析 (神奇的web site)

PostgreSql 复杂的查询,我可怎么分析 (神奇的web site)

作者头像
AustinDatabases
发布2020-02-21 18:22:30
9520
发布2020-02-21 18:22:30
举报
文章被收录于专栏:AustinDatabases

永久了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

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

首先

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 的功能多,但分析来说已经很不错了。配合非界面化的文字来协同分析,可以达到比较好的结果。

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

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

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

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

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

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

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

https://explain.depesz.com/

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

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

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

2 通过psql -qAtd 数据库 -f 执行语句 > 文件

的方式来获得 json 执行计划的输出文件

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-02-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AustinDatabases 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档