使用COALESCE时未使用GIN索引

时间:2019-04-03 06:24:23

标签: django postgresql indexing

我正在尝试在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的原因是我将使用Django的ORM,它将自动将COALESCE添加到查询中。

我在做什么错了?

0 个答案:

没有答案