PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

No PostgreSQL, como podemos saber se cada índice de uma tabela é clusterizado ou não?


O Postgres não suporta índices clusterizados no sentido de MySql. Pode haver um índice que foi usado para agrupar a tabela. Você pode verificar isso consultando a coluna indisclustered no catálogo do sistema pg_index.

Exemplo:
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)

Leia a documentação sobre CLUSTER: