sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur kan vi i PostgreSQL se om varje index i en tabell är klustrade eller inte?

Postgres stöder inte klustrade index i den meningen som i MySql. Det kan finnas ett index som användes för att gruppera tabellen. Du kan kontrollera detta genom att fråga i kolumnen indisclustered i systemkatalogen pg_index.

Exempel:

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)

Läs i dokumentationen om KLUSTER:




  1. SQL beställningsdata från rad n+1 till n-1

  2. Skriv ut innehållet i en datatabell

  3. Hur man endast returnerar datumet från en SQL Server DateTime-datatyp

  4. Mysql-bulkuppdatering