sql >> Databáze >  >> RDS >> PostgreSQL

Jak můžeme v PostgreSQL zjistit, zda je každý index tabulky seskupený nebo ne?

Postgres nepodporuje clusterované indexy ve smyslu jako v MySql. Může existovat index, který byl použit ke shlukování tabulky. Můžete to zkontrolovat dotazem na sloupec indisclustered v systémovém katalogu pg_index.

Příklad:

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)

Přečtěte si dokumentaci o CLUSTER:




  1. Jak spustíte SQL z bash skriptu?

  2. Jak monitorovat prostor MySQL?

  3. Automatizace defragmentace indexu v databázi MS SQL Server

  4. Entity-Framework -> MySql dává 'Vyhodnocení funkce vypršel.'