Diferencia de rendimiento entre el índice en dos columnas vs condicional índice

0

Pregunta

Tengo un decentemente grande postgres mesa con un par de millones de filas.

Sin embargo, la tabla podría ser dividida por una columna (type)

Debemos preferir:

Un índice con dos columnas

create nonclustered index ix_index1 on table1(type, string_urn_id)

o un condicional índice

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

Mejor respuesta

1

No hay ninguna declaración create nonclustered index en PostgreSQL.

¿Qué es mejor depende de la definición de "mejor". A partir de un mantenimiento perspectiva, el único índice que es mejor, porque usted no tendrá que crear un nuevo índice cada vez que agregue un nuevo type.

Desde una perspectiva de rendimiento, sólo un punto de referencia con datos realistas puede decir. El tiempo de planificación aumentará con muchos de los índices, pero el rendimiento de la consulta puede ser un poco mejor.

Si la partición de la tabla, el rendimiento de la consulta va a disminuir, pero se puede hacer con un único índice con particiones en string_urn_id.

2021-10-27 07:02:43

En otros idiomas

Esta página está en otros idiomas

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