【PostgreSQL 】PostgreSQL 15对distinct的优化

本文探讨了PostgreSQL 15中对DISTINCT操作的优化,特别是通过并发利用多个CPU提升性能。实验结果显示,随着列数增加,性能提升显著。同时,调整max_parallel_workers_per_gather参数可以进一步优化,但需注意避免超过硬件限制导致性能下降。在某些情况下,禁用特定索引扫描参数可能有助于提升查询效率。
摘要由CSDN通过智能技术生成

🚀 优质资源分享 🚀

学习路线指引(点击解锁) 知识定位 人群定位
🧡 Python实战微信订餐小程序 🧡 进阶级 本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。
💛Python量化交易实战💛 入门级 手把手带你打造一个易扩展、更安全、效率更高的量化交易系统

示例表

?

| 12345678910111213 | table t_ex;``c1 | c2``----+----``2 | B``4 | C``6 | A``2 | C``4 | B``6 | B``2 | A``4 | B``6 | C``2 | C |

以下SQL语句有序地返回"c1"列中唯一值:

?

| 1 | select distinct on``(c1) * from abce; |

对于c2列,会根据c1的唯一性,从表中找到的第一个值。

?

| 1234567 | postgres=# select distinct on``(c1) * from abce;``c1 | c2 ----+----``2  | B``4  | B``6  | B``(3 rows``) |

以下SQL语句有序地返回"c2"列中唯一值:

?

| 1234567 | # select distinct on``(c2) * from abce;``c1 | c2 ----+----``6  | A``2  | B``4  | C``(3 rows``) |

最后从表中返回唯一性的记录

?

| 123456789101112 | postgres=# select distinct * from abce;``c1 | c2 ----+----``6  | C``4  | C``4  | B``2  | C``2  | A``6  | B``6  | A``2  | B``(8 rows``) |

那么你可能会问,在postgresql15中,distinct的增强体现在哪些方面呢?答案是:并发

在此之前,只有一个cpu或进程来计算不同的值。在postgresql15中,可以使用并发,使用多个cpu进程。这一特性涉及好几个参数,但是,我们只聚焦在参数max_parallel_workers_per_gather。

为了演示这个改进,我们创建三个表,没有索引,填充大约5000000条记录。注意,表的列数分别为1,5,10。

?

| 12345678910111213141516171819202122232425262728 | Table "public.t1"``Column |  Type   | Collation | Nullable | Default``--------+---------+-----------+----------+---------``c1     | integer |           |          |  Table "public.t5"``Column |         Type          | Collation | Nullable | Default``--------+-----------------------+-----------+----------+---------``c1     | integer               |           |         

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值