Это немного сложная тема.В общем случае базы данных не будут оптимизировать запрос LIKE, если он не привязан к началу.Если вы выполняете поиск по 4 столбцам, то, скорее всего, это не так.
http://www.postgresql.org/docs/8.4/static/indexes-types.html
Оптимизатор также может использовать индекс B-дерева для запросов, связанных с сопоставлением с шаблоном.операторы LIKE и ~, если шаблон является константой и привязан к началу строки - например, col LIKE 'foo%' или col ~ '^ foo', но не col LIKE '% bar'.Однако, если ваша база данных не использует локаль C, вам нужно будет создать индекс со специальным классом операторов для поддержки индексации запросов на сопоставление с образцом;см. раздел 11.9 ниже.Также возможно использовать индексы B-дерева для ILIKE и ~ *, но только если шаблон начинается с не алфавитных символов, т. Е. Символов, на которые не влияет преобразование в верхний / нижний регистр.
Вы можете рассмотреть полнотекстовую поддержку в postgresql, если вы делаете запросы на естественном языке (например, поисковую систему) ...