PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

In PostgreSQL, come possiamo sapere se ogni indice di una tabella è raggruppato o meno?

Postgres non supporta gli indici cluster nel senso di MySql. Potrebbe esserci un indice che è stato utilizzato per raggruppare la tabella. Puoi verificarlo interrogando la colonna indisclustered nel catalogo di sistema pg_index.

Esempio:

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)

Leggi la documentazione su CLUSTER: