Как производить "быстрый поиск" в базе?
На сайте есть несколько разделов, в этих разделах отображаются таблицы с данными. Например таблица пользователей и их информация.
Есть одно единственное поле поиска, в которое "искатель" может написать любой текст, например "ива" и в итоге в таблице должны отобразиться только те строки, где присутствует данная строка. Столбцов может быть много, хоть 50, поиск может быть осуществлён и по числу (ну например "количество подчинённых у пользователя"), а также таблицы могут быть связанными (например с таблицей адресов пользователей, настроек, подразделения и т.д.).
Вопрос: каким способом это осуществлять?
- Считаю, что способ поиска строки через
LIKE %searchString%по всем столбцам крайне неэффективна, поэтому этот вариант сразу не рассматриваю. - Был вариант делать конкатенацию значений всех (или почти всех) столбцов и только по сконкатенированной строке делать
LIKE %searchString%. На сколько это эффективно? - Был вариант выгрузить данные на клиент, но там хранить негде такой объём данных.
localStorageслишком маленький. - Может быть использовать какие-то кэширующие средства? Какие?
- Может быть использовать какие-то специализированные поисковые движки? Какие? Получается надо будет дублировать информацию из основной базы в движковою?
В общем, как это правильно делать? Что применять? На что обращать внимание? Какие нюансы и т.д.