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

Hvordan kan vi i PostgreSQL se, om hvert indeks i en tabel er klynget eller ej?

Postgres understøtter ikke klyngede indekser i den forstand som i MySql. Der kan være et indeks, som blev brugt til at gruppere tabellen. Du kan kontrollere dette ved at forespørge i kolonnen indisclustered i systemkataloget pg_index.

Eksempel:

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. Effektiv forespørgsel i en enorm tidsserietabel for én række hvert 15. minut

  2. Oracle sql returnerer sandt, hvis der findes spørgsmål

  3. Oracle Unique Constraint baseret på kolonneværdi

  4. Database-uafhængig SQL-strengsammenkædning i skinner