Diferenta de performanta intre index pe două coloane vs condiționată index

0

Problema

Am un decent mare postgres masă cu câteva miliarde de rânduri.

Cu toate acestea, tabelul ar putea fi partiționat de o coloană (type)

Ar trebui să preferăm:

Un index cu două coloane

create nonclustered index ix_index1 on table1(type, string_urn_id)

sau condiționată index

create nonclustered index ix_index1_alternative on table1(string_urn_id) WHERE type = 'type1'
create nonclustered index ix_index1_alternative2 on table1(string_urn_id) WHERE type = 'type2'
create nonclustered index ix_index1_alternative3 on table1(string_urn_id) WHERE type = 'type3'
....
database-performance postgresql
2021-10-27 02:41:08
1

Cel mai bun răspuns

1

Nu există nici o declarație create nonclustered index în PostgreSQL.

Ceea ce este mai bine depinde de definiția de "mai bine". De la o întreținere perspectivă, singur indice este mai bine, pentru că nu va trebui să creeze un index nou ori de câte ori se adaugă un nou type.

De la o performanță perspectivă, doar un punct de referință cu date realiste pot spune. Planificarea în timp, va crește cu mai mulți indici, dar performanța de interogare poate fi un pic mai bine.

Daca ai partitie tabelul, interogarea performanța va scădea, dar se poate face cu un singur index partitionat pe string_urn_id.

2021-10-27 07:02:43

În alte limbi

Această pagină este în alte limbi

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................