PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Dans PostgreSQL, comment savoir si chaque index d'une table est clusterisé ou non ?

Postgres ne prend pas en charge les index clusterisés au sens de MySql. Il peut y avoir un index qui a été utilisé pour regrouper la table. Vous pouvez le vérifier en interrogeant la colonne indisclustered dans le catalogue système pg_index.

Exemple :

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)

Lire dans la documentation sur CLUSTER :