PostgreSQL在列名上反转了ILIKE

时间:2018-11-22 13:28:03

标签: database postgresql indexing query-optimization sql-like

我试图通过前端找出给定的用户名是有效名称。 我有一个包含很多名称的表。 例如,我得到了 Adam18 ,我需要实时给出一个答案(<500ms)

我的查询:

SELECT * FROM names WHERE 'Adam18' ILIKE '%' || name || '%'

查询正确,但使用顺序扫描

说明结果:

Seq Scan on names  (cost=0.00..2341.20 rows=527 width=516) (actual time=1.452..24.774 rows=12 loops=1)
    Filter: ('Adam18'::text ~~ (('%'::text || (name)::text) || '%'::text))
  Rows Removed by Filter: 105314
  Buffers: shared hit=498
Planning time: 0.062 ms
Execution time: 24.796 ms

有没有办法在这种情况下创建索引?

我当前的索引:

CREATE INDEX names_gin_idx ON names USING gin (name gin_trgm_ops)

我不能使用它。你能帮我吗?

0 个答案:

没有答案