PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Wie können wir in PostgreSQL feststellen, ob jeder Index einer Tabelle geclustert ist oder nicht?

Postgres unterstützt keine Clustered-Indizes im Sinne von MySql. Möglicherweise gibt es einen Index, der zum Clustern der Tabelle verwendet wurde. Sie können dies überprüfen, indem Sie die Spalte indisclustered abfragen im Systemkatalog pg_index.

Beispiel:

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)

Lesen Sie die Dokumentation zu CLUSTER: