PostgreSQL изменил ILIKE на имя столбца - PullRequest
0 голосов
/ 22 ноября 2018

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

Я не могу использовать это.Вы можете мне помочь?

...