alexjet73
@alexjet73

Что быстрее поиск по файлу JSON в PHP или в базе посредством MySQL?

Есть небольшая база с примерно 1000 записями. Нужно реализовать поиск AJAX (с моментальной выдачей результатов уже при наборе текста поиска) по одному полю `name`. Что будет лучше в плане скорости и нагрузки, сделать JSON файл и искать по нему при помощи PHP или же сделать FULLTEXT поле и искать уже по базе при помощи запроса в mysql?
  • Вопрос задан
  • 242 просмотра
Решения вопроса 2
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
Быстрее будет выгрузить всю базу (без разницы из чего, из базы данных, или из JSON-файла) в Javascript нужной страницы, а потом именно Javascript ищет в этом всём выгруженном.
Ответ написан
@Vitsliputsli
Если это обычный вопрос, что лучше, то храните в БД. Если реально пытаетесь выиграть несколько миллисекунд, то положите это все в redis.
В принципе, хранение в массиве php скорее всего тоже будет достаточно быстрым, при условии использования php-fpm и без json.
Если нужен поиск подстроки в строке, то на таких объемах тоже вполне быстро будет работать. На больших придется рассматривать, что-то вроде Elastic, т.к. СУБД это делают плохо, а MySQL очень плохо.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 5
iMedved2009
@iMedved2009
Не люблю людей
Ну пока вы в php не реализуете какого нибудь daemon'a который будет держать в памяти содержимое файла, индексы и прочее - MySQL будет быстрее.
Ответ написан
@Akina
Сетевой и системный админ, SQL-программист.
Что будет лучше в плане скорости и нагрузки

Определитесь. Или в приоритете скорость, или нагрузка. Но не то и другое одновременно.

Если приоритетна скорость - то данные должны быть предварительно (а не в момент поступления запроса) загружены в PHP и там проиндексированы, причём должен использоваться алгоритм индексирования, обеспечивающий высокую скорость поиска. Поскольку речь идёт о поиске по подстроке, то, вероятно, это суффиксное дерево или аналогичная индексирующая структура.

Если приоритетна нагрузка - то поиск следует производить средствами СУБД.
Ответ написан
Комментировать
@rPman
1000 записей скорее всего можно на клиента выгрузить и в javascript искать это будет самый быстрый вариант

Базы данных это скорее по удобство скорость поиска с поддержкой записи и расширения размера базы, поэтому это рекомендуется по умолчанию, не обязательно mysql, можно обойтись sqlite

Если говорить про конкретный случай, то загрузка дампа памяти из файла в готовом виде типа var_export, или лучше igbinary_serialize, будет самым эффективным способом

Но нужно понимать что если алгоритм поиска сложный, не просто по подстроке, то тут уже сам php будет давать накладные расходы
Ответ написан
Комментировать
mayton2019
@mayton2019
Bigdata Engineer
Недавно я смотрел доклад Бартунова (это один из ведущих разработчиков Postgres в РФ ), вобщем он хвастался, что на поисковых операциях по Json , pg быстрее чем MongoDb.
Ответ написан
Комментировать
Sanes
@Sanes
MySQL конечно. За 1000 записей в браузере надо на Северный полюс ссылать.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы