sql >> Base de Datos >  >> RDS >> PostgreSQL

En PostgreSQL, ¿cómo podemos saber si cada índice de una tabla está agrupado o no?

Postgres no admite índices agrupados en el sentido de MySql. Puede haber un índice que se utilizó para agrupar la tabla. Puede verificar esto consultando la columna indisclustered en el catálogo del sistema pg_index.

Ejemplo:

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)

Lea en la documentación sobre CLUSTER: