postgresql - 在 PostgreSQL 中,我们如何判断一个表的每个索引是否是聚集的?
解决方案
Postgres 不像 MySql 那样支持聚集索引。可能存在用于对表进行聚类的索引。您可以通过查询indisclustered
系统目录pg_index 中的列来检查这一点。
indisclustered - 如果为 true,则表最后聚集在此索引上
例子:
create table my_table(id serial primary key, str text unique);
select relname, indisclustered
from pg_index i
join pg_class c on c.oid = indexrelid
where indrelid = 'public.my_table'::regclass
relname | indisclustered
------------------+----------------
my_table_str_key | f
my_table_pkey | f
(2 rows)
cluster my_table using my_table_str_key;
select relname, indisclustered
from pg_index i
join pg_class c on c.oid = indexrelid
where indrelid = 'public.my_table'::regclass
relname | indisclustered
------------------+----------------
my_table_str_key | t
my_table_pkey | f
(2 rows)
阅读有关CLUSTER 的文档:
当一个表被聚集时,它会根据索引信息在物理上重新排序。集群是一次性操作:当表随后更新时,更改不会集群。也就是说,不会尝试根据索引顺序存储新的或更新的行。
推荐阅读
- linux - 确定字符串“a”在“x”小时内是否相同然后执行“Y”的 Bash 脚本
- javascript - ES6 中的单例不持久化实例
- c# - 有没有办法从 json 声明和设置类的变量?
- opencv - 找到暗网 OpenCV 但无法演示
- excel - Excel VBA 宏给出了意想不到的结果?
- akka - 如何在测试中禁用 Akka 死信警告
- python - 如何在 python 终端中的 ax,y 位置上书写(基于文本)
- node.js - 我在一个应用程序中有两个版本的 React Native
- python - Django - MySQL 中超过一百万条记录的 Q 查找搜索速度很慢
- javascript - javascript 条件语法运行不正常