Postgresql: может ли столбец иметь несколько индексов и использоваться другой в зависимости от цели - PullRequest
1 голос
/ 08 июля 2011

Я думаю о том, чтобы начать использовать базу данных PostgreSQL.

Мне часто приходится делать разные вещи с одними и теми же данными. Например, иногда мне приходится искать похожие строки с помощью LIKE, а иногда мне приходится проверять, существует ли значение или нет.

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

Можно ли создать два разных типа индекса для одних и тех же данных, а затем указать БД, что использовать как часть оператора SQL.

Меня заинтересует любая информация, относящаяся к postgresql или относящаяся к возможностям реляционных DMS в целом.

РЕДАКТИРОВАТЬ: мой заголовок был неправильным: я изменил слово hashes на indexes

Ответы [ 2 ]

3 голосов
/ 08 июля 2011

Возможно иметь несколько индексов, и Postgres автоматически использует тот, который, по его мнению, лучше всего подходит для вашего запроса.

0 голосов
/ 08 июля 2011

Postgres будет использовать лучший индекс, который он может использовать, и затраты на проверку того, какой индекс использовать, минимальны - он даже не должен быть измеримым. Вы можете использовать подготовленные заявления , чтобы полностью устранить его. Гораздо важнее время, необходимое для управления дополнительным индексом при вставке и обновлении данных.

Так что если ваша таблица часто меняется, вы должны ограничить количество индексов до минимума.

Если изменения в вашей таблице происходят редко или могут быть медленными, вы можете создать столько индексов, сколько захотите. Например, в еще не выпущенном PostgreSQL 9.1 (но теперь доступна вторая бета-версия, пригодная для разработки), вы можете значительно ускорить поиск LIKE за счет медленных обновлений / вставок .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...