Как производить "быстрый поиск" в базе?

На сайте есть несколько разделов, в этих разделах отображаются таблицы с данными. Например таблица пользователей и их информация.

Есть одно единственное поле поиска, в которое "искатель" может написать любой текст, например "ива" и в итоге в таблице должны отобразиться только те строки, где присутствует данная строка. Столбцов может быть много, хоть 50, поиск может быть осуществлён и по числу (ну например "количество подчинённых у пользователя"), а также таблицы могут быть связанными (например с таблицей адресов пользователей, настроек, подразделения и т.д.).

Вопрос: каким способом это осуществлять?

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

В общем, как это правильно делать? Что применять? На что обращать внимание? Какие нюансы и т.д.


Ответы (0 шт):