🚀 优质资源分享 🚀
学习路线指引(点击解锁) | 知识定位 | 人群定位 |
---|---|---|
🧡 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
| |