前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >POSTGRESQL Partial Indexes 数据库优化 与 Explain 执行计划展示

POSTGRESQL Partial Indexes 数据库优化 与 Explain 执行计划展示

作者头像
AustinDatabases
发布2020-06-04 15:23:53
6020
发布2020-06-04 15:23:53
举报
文章被收录于专栏:AustinDatabasesAustinDatabases

EXPLAIN 是每个数据库都有的东西,可能表达的方式不同,但根本就是要看到你无论是简单的只有一块”巴掌”大小的“文明布” 的语句, 还是“棉裤套皮裤,在套上皮裤衩”的SQL, 都能明明白白的给你拆解成一行行的解释,掰开揉碎的告诉你的SQL 是 经典,还是垃圾。

Postgresql的EXPLAIN 又是如何,与其他的数据库比较孰高孰低,我们往下看。

在POSTGRESQL 中有

explain 和 explain analyze 的方式来,其中的区别是前者是评估,后者是实际执行计划。

下面是大致的执行的中显示的注解

POSTGRESQL 的EXPLAIN 和 EXPLAIN ANALYZE 在显示执行计划方面与其他数据库在同一水平线。

那今天的”猪脚“ Partial Indexes 到底和优化有什么关系,我们下面有一个表,其中和客户的的payment 有关。

我们的业务逻辑是这样,这张表中存储着整体用户在公司产品的消费记录,而需要定期来统计,某几位(大客户)消费的金额总数语句如下

explain analyze select sum(amount) from payment where customer_id in (341,343) group by customer_id;

下面第一个是建立了 partical index 从图中看,对比删除了 partical index 使用正常的索引来看,在 cost 和 时间上均有一些变化,partical 使用的时间和COST 要小于 index 整体。

而实际当中partical index 的意义更在于在提高查询的速度的情况下,节省了索引存储的数据空间,例如多列值的索引,这样就可以根据查询建立返回数据匹配列的索引,而不再需要回表提供数据,并且在UPDATE 数据的情况下会产生锁的可能会因为锚定索引数据的比率而降低(只会比传统索引降低,持平的情况都会比较少)。

不光如此,如果partical index 建立的索引的针对性(针对数据的在总体数据的比率)更小例如查询的数据只占整体数据的 百分之 2% 则遇到需要索引遍历查询的情况,就会比建立全部索引的情况要节省 98%的时间。

另外与普通索引不同,在创建partical 索引的情况下 需要analyze分析将收集关于索引的统计信息,以便查询计划器能够确定使用哪个索引以及如何最佳地使用它。

最后用几句话来总结

部分索引仅存储筛选器指定的信息 部分索引可以非常具体 与传统索引相比,部分索引节省了空间

共享文件持续更新中,如有需要入群自取

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

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

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

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

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