разница в производительности между запросом базы данных или поиском в массиве? - PullRequest
0 голосов
/ 21 сентября 2011

У меня есть функция предложения, которая берет то, что пользователь уже написал (скажем, «abc»), и предлагает предложения, основанные на списке из 20k + элементов.

Теперь я не хочу ничего фантастического, этопросто ищет строки, которые начинаются с «abc», и это то, что я хочу.

Мой вопрос: есть огромная разница в производительности, если список элементов написан в виде массива PHP, по сравнению сSQL db?

спасибо!

Ответы [ 2 ]

1 голос
/ 21 сентября 2011

Да, сложность поиска в базе данных по индексируемому столбцу должна составлять примерно log (n), просто поиск по массиву будет n (если вы не используете binsearch в отсортированном массиве). В любом случае RMDBS сделает это намного быстрее, поскольку он сильно оптимизировал код для выполнения таких задач, а PHP - это язык сценариев, использующий ссылки везде (очень медленно).

0 голосов
/ 21 сентября 2011

Я бы сказал, что это зависит.В большинстве случаев база данных работает быстрее, но следует учитывать, что самой дорогой операцией является дисковый ввод-вывод, а наличие данных, жестко закодированных в массиве php, устраняет необходимость чтения данных с жесткого диска.Так что, если ваша база данных имеет высокий уровень фрагментации, производительность может быть немного выше при последовательном поиске по массиву.
Однако, когда дело доходит до большого объема данных, db сделает работу лучше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...