Ответ 1
Я не думаю, что я мог бы объяснить это лучше, чем руководство уже делает:
При выборе типа индекса для использования, GiST или GIN, рассмотрите эти различия в производительности:
Поисковые запросы индекса GIN примерно в три раза быстрее, чем GiST
Индексы GIN занимают примерно три раза дольше, чем GiST
Индексы GIN умеренно медленнее обновлять, чем индексы GiST, но примерно в 10 раз медленнее, если поддержка быстрого обновления отключена [...]
Индексы GIN в два-три раза больше, чем индексы GiST
Ссылка на текущее руководство, цитата из версии для 9.4, а ваша ссылка на версию 9.1 (по какой-то причине?).
Оценки размера и производительности немного устарели в руководстве - и с тех пор были удалены.
С Postgres 9.4 шансы существенно изменились в пользу GIN.
примечания к выпуску Postgres 9.4 включают в себя:
Уменьшить размер индекса GIN (Александр Коротков, Хейкки Линнакангас) [...]
Улучшить скорость поиска с использованием нескольких ключей GIN (Александр Коротков, Хейкки Linnakangas)
Обратите внимание, что существуют специальные варианты использования, которые требуют того или другого.
Одна вещь, которую вы неправильно поняли: вы никогда получаете неправильные результаты с индексом GiST. Индекс работает с хэш-значениями, что может привести к ложным срабатываниям индекса. Это должно стать актуальным только с очень большим количеством разных слов в ваших документах. Ложные срабатывания исключаются после повторной проверки фактической строки в любом случае. Руководство:
Алгоритм GiST является убыточным, что означает, что индекс может создавать ложные совпадений, и необходимо проверить фактическую строку таблицы на устранить такие ложные совпадения. (PostgreSQL делает это автоматически, когда это необходимо.)
Смелый акцент мой.