Разница в производительности между индексом в двух столбцах и условным индексом

0

Вопрос

У меня есть прилично большая таблица postgres с несколькими миллиардами строк.

Однако таблица может быть разделена на один столбец (type)

Должны ли мы предпочесть:

Индекс с двумя столбцами

create nonclustered index ix_index1 on table1(type, string_urn_id)

или условный индекс

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

Лучший ответ

1

Нет никакого заявления create nonclustered index в PostgreSQL.

Что лучше, зависит от определения "лучше". С точки зрения обслуживания один индекс лучше, потому что вам не придется создавать новый индекс всякий раз, когда вы добавляете новый type.

С точки зрения производительности, об этом может судить только тест с реалистичными данными. Время планирования увеличится со многими индексами, но производительность запросов может быть немного выше.

Если вы разделите таблицу, производительность запросов снизится, но вы можете обойтись одним секционированным индексом на string_urn_id.

2021-10-27 07:02:43

На других языках

Эта страница на других языках

Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................