Мне нужен поиск по префиксу, по точному вхождению.
Результат можно получить такими запросами.
SELECT * FROM regions WHERE name ILIKE 'екат%';
SELECT * FROM regions WHERE LOWER(name) LIKE 'екат%';
Простой btree индекс по полю работает с LIKE, но не работает с ILIKE.
Функциональный индекс lower(name), работает по точному вхождению, но не рабтает с "LOWER(name) LIKE 'екат%';".
Можно еще через полнотекстовый поиск:
SELECT * FROM geobase_region WHERE fts @@ to_tsquery('simple', 'заречный:*');
Но в случае с полнотекстовым добавляется геморой с обновлением индекса, ну там проедуры какие-то писать. Может быть без этого можно?