分析PostgreSQL中的distinct和group by
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本篇内容介绍了"分析PostgreSQL中的distinct和group by"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家
千家信息网最后更新 2026年11月01日分析PostgreSQL中的distinct和group by
本篇内容介绍了"分析PostgreSQL中的distinct和group by"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
通常来说,获取唯一值,既可以用distinct也可以用group by,但在存在主键时,group by会做相应的优化,把多个分组键规约为主键.
没有主键的情况
[pg12@localhost ~]$ psqlExpanded display is used automatically.psql (12.2)Type "help" for help.[local:/data/run/pg12]:5120 pg12@testdb=# create table tbl1 (id int,c1 text,c2 int,c3 varchar);CREATE TABLE[local:/data/run/pg12]:5120 pg12@testdb=# insert into tbl1 (id,c1,c2,c3) select x,x||'c1',x,x||'c3' from generate_series(1,100000) as x;INSERT 0 100000[local:/data/run/pg12]:5120 pg12@testdb=# explain select distinct id,c1,c2,c3 from tbl1; QUERY PLAN ------------------------------------------------------------------ HashAggregate (cost=1668.94..1720.54 rows=5160 width=72) Group Key: id, c1, c2, c3 -> Seq Scan on tbl1 (cost=0.00..1152.97 rows=51597 width=72)(3 rows)[local:/data/run/pg12]:5120 pg12@testdb=# explain select id,c1,c2,c3 from tbl1 group by id,c1,c2,c3; QUERY PLAN ------------------------------------------------------------------ HashAggregate (cost=1668.94..1720.54 rows=5160 width=72) Group Key: id, c1, c2, c3 -> Seq Scan on tbl1 (cost=0.00..1152.97 rows=51597 width=72)(3 rows)
存在主键的情况
[local:/data/run/pg12]:5120 pg12@testdb=# alter table tbl1 add primary key(id);'ALTER TABLE[local:/data/run/pg12]:5120 pg12@testdb=# explain select distinct id,c1,c2,c3 from tbl1; QUERY PLAN ------------------------------------------------------------------------- Unique (cost=14043.82..15293.82 rows=100000 width=72) -> Sort (cost=14043.82..14293.82 rows=100000 width=72) Sort Key: id, c1, c2, c3 -> Seq Scan on tbl1 (cost=0.00..1637.00 rows=100000 width=72)(4 rows)[local:/data/run/pg12]:5120 pg12@testdb=# explain select id,c1,c2,c3 from tbl1 group by id,c1,c2,c3; QUERY PLAN ------------------------------------------------------------------------------------- Group (cost=0.29..5402.29 rows=100000 width=72) Group Key: id -> Index Scan using tbl1_pkey on tbl1 (cost=0.29..5152.29 rows=100000 width=72)(3 rows)[local:/data/run/pg12]:5120 pg12@testdb=#
在存在主键的情况下,使用group by时,分组键只需要主键即可.
"分析PostgreSQL中的distinct和group by"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
情况
分析
内容
更多
知识
分组
实用
学有所成
接下来
困境
多个
实际
文章
案例
编带
网站
行业
过程
高质量
学习
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技公司简介
互联网科技公司的优势
互联网中国科技
互联网科技未来
上海挚品互联网科技
互联网科技股票
中国互联网科技发展
上海喔噻互联网科技
腾讯科技 互联网女皇
互联网科技ppt模板
深圳市运趣互联网科技有限公司
苏州五指互联网络科技有限
玉溪互联网科技怎么选
华夏恒生互联网科技013171
中国互联网公司排名锤子科技
东莞新华互联网科技学校
广州新华互联网科技学校电竞方面
扫呗互联网科技有限公司
数字互联网科技有限公司
10位科技互联网大佬
互联网科技公司
互联网络科技
科技制造互联网公司
北京互联网科技有限公司
天津摩尔互联网科技
须眉科技是互联网公司吗
互联网科技接地气
互联网公司属于科技吗
悟空问答互联网科技
互联网科技大会大佬