Diferença de desempenho entre o índice em duas colunas vs condicional índice

0

Pergunta

Eu tenho um decentemente grande postgres tabela com alguns bilhões de linhas.

No entanto, a tabela pode ser particionada por uma coluna (type)

Devemos preferir:

Um índice com duas colunas

create nonclustered index ix_index1 on table1(type, string_urn_id)

ou condicional, o índice de

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

Melhor resposta

1

Não há nenhuma instrução create nonclustered index no PostgreSQL.

O que é melhor depende da definição de "melhor". A partir de uma perspectiva de manutenção, o único índice é melhor, porque você não terá que criar um novo índice, sempre que você adicionar um novo type.

A partir de uma perspectiva de desempenho, só um ponto de referência com dados realistas podem dizer. O tempo de planejamento irá aumentar com muitos índices, mas o desempenho de consulta pode ser um pouco melhor.

Se você particionar a tabela, o desempenho da consulta irá diminuir, mas você pode fazer com um único índice particionado em string_urn_id.

2021-10-27 07:02:43

Em outros idiomas

Esta página está em outros idiomas

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