Как вы обычно определяете индексы в PostgreSQL (из MySQL) - PullRequest
2 голосов
/ 06 марта 2011

Как и все остальное, кажется, что PostgreSQL имеет гораздо более мощную / сложную индексацию для таблиц.Возможно, кто-то может помочь мне узнать способ индексации столбцов по умолчанию.

По умолчанию я имею в виду целочисленные / логические столбцы, которые используются для фильтрации результатов таблицы 90% времени.

В MySQL я просто создал бы индекс для столбцас тем же именем, что и этот столбец.Я не уверен, какой тип использовался (btree?) Или каковы были названия именования индекса так же, как столбца - но это сработало.

Теперь, переходя на PostgreSQL, мне интересно, есть лилюбая проблема с именованием индекса с тем же именем (или любая причина не слишком).Также мне интересно, какой тип индекса следует использовать для значений типа int / bool.

Ответы [ 2 ]

6 голосов
/ 06 марта 2011

Если вы хотите индексировать логические значения, используйте условный индекс.Большинство булевых значений либо равномерно искажены, и в этом случае индекс только на булевых значениях практически ничего не дает, так как вы будете читать половину так или иначе.Но в тех случаях, когда у вас есть логическое значение, где 99,999% строк представляют собой одно значение, а другие 0,001% - другое значение, создается индекс JUST, который имеет значение 0,001%:

create index mostly_true on tablename (somefieldIwantwhenboolfieldisfalse)
  where boolfield is false;

Обратите внимание, чтоэто также работает для многоколоночных индексов.

create index mostly_true on tablename (col1,col2) where boolfield is false;
6 голосов
/ 06 марта 2011

По большей части тип индекса по умолчанию (btree) будет в порядке.

Имя индекса по умолчанию (если вы не указываете его в операторе CREATE INDEX) основано на имени таблицы и столбца, обычно что-то вроде таблица _ столбец _idx. Имена индексов IIRC должны быть уникальными в схеме, поэтому, если вы присваиваете индексам то же имя, что и столбцам, вы можете столкнуться с проблемами, если одно и то же имя столбца используется в нескольких таблицах схемы.

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