我试图通过前端找出给定的用户名是有效名称。 我有一个包含很多名称的表。 例如,我得到了 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)
我不能使用它。你能帮我吗?