Я пытаюсь выяснить, данное имя пользователя по внешнему интерфейсу является действительным именем или нет.У меня есть таблица, которая содержит много имен.Например, я получил Adam18 Мне нужно дать ответ в режиме реального времени (<500 мс) </p>
Мой запрос:
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)
Я не могу использовать это.Вы можете мне помочь?