GIN Index не используется при использовании COALESCE - PullRequest
0 голосов
/ 03 апреля 2019

Я пытаюсь реализовать полнотекстовый поиск в Django и PostgreSQL.Функционально это работает.Но у меня были трудности с добавлением индекса GIN для улучшения его производительности.

Вот как я создал индекс:

CREATE INDEX make_model_gin_index ON public.vehicle USING gin (to_tsvector('english'::regconfig, (((make)::text || ' '::text) || (model)::text)))

Теперь, когда я делаю запрос следующим образом:

select make, model
   from vehicle
   where to_tsvector('english', make || ' ' || model) @@ to_tsquery('mersedes')
   limit 1000;

Используется индекс:

->  Bitmap Index Scan on make_model_gin_index  (cost=0.00..721.10 rows=35847 width=0)

Однако, если я добавлю COALESCE в запрос следующим образом:

select make, model
   from vehicle
   where to_tsvector('english', coalesce(make, '') || ' ' || coalesce(model, '')) @@ to_tsquery('mersedes')
   limit 1000;

, индекс не будет использоваться.

Причина, по которой я хочу добавить COALESCE, заключается в том, что я буду использовать ORM Джанго, и он автоматически добавит COALESCE в запрос.

Что я делаю не так?

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