Différence de performances entre les index sur les deux colonnes de vs conditionnelle de l'indice de

0

La question

J'ai un décemment grand postgres table avec quelques milliards de lignes.

Cependant, le tableau pourrait être partitionnée en une seule colonne (type)

Doit-on préférer:

Un index avec deux colonnes

create nonclustered index ix_index1 on table1(type, string_urn_id)

ou conditionnelle d'un 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

La meilleure réponse

1

Il n'y a pas de déclaration create nonclustered index dans PostgreSQL.

Ce qui est mieux dépend de la définition de "mieux". À partir d'un point de vue de l'entretien, le seul indice est mieux, parce que vous n'aurez pas à créer un nouvel index à chaque fois que vous ajoutez un nouveau type.

À partir d'un point de vue des performances, seulement un indice de référence des données réalistes peuvent le dire. La planification du temps à s'accroître avec de nombreux indices, mais les performances de la requête peut être un peu mieux.

Si vous partition de la table, les performances de la requête va diminuer, mais vous pouvez le faire avec un simple index partitionné sur string_urn_id.

2021-10-27 07:02:43

Dans d'autres langues

Cette page est dans d'autres langues

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