как хранить огромное количество данных в php? - PullRequest
3 голосов
/ 18 марта 2011

Я должен искать по огромным данным из БД через код PHP. Я не хочу давать много хитов. Поэтому я выбрал все данные из базы данных для поиска и попытался сохранить их в массиве для дальнейшего поиска в массиве, а не в базе данных, но проблема в том, что данные превышают предел массива. Что делать?

Ответы [ 5 ]

19 голосов
/ 18 марта 2011

Не делайте этого.

Базы данных предназначены специально для обработки больших объемов данных.Массивы не являются.

Лучше всего было бы правильно проиндексировать вашу базу данных, а затем написать оптимизированный запрос, который получит необходимые данные из базы данных.Вы можете использовать PHP для построения запроса.С помощью хорошего запроса вы можете получить практически все, что угодно, из базы данных, без необходимости обработки массива PHP.

Если вы привели конкретный пример, мы могли бы помочь вам сконструировать этот запрос SQL.

4 голосов
/ 18 марта 2011

Базы данных для фильтрации данных для вас. Используйте самый точный запрос, который вы можете, и фильтруйте код, только если это слишком сложно (или невозможно) сделать в SQL.

Полный выбор таблицы может быть намного дороже (особенно для операций ввода-вывода на сервере БД, и он может иметь пагубные последствия для кеша сервера), чем правильно проиндексированный select с соответствующим предложением where. ).

2 голосов
/ 18 марта 2011

При получении записей из базы данных в PHP возникают накладные расходы на связь, поэтому не только полезно уменьшить количество вызовов из PHP в базу данных, но и идеально минимизировать количество элементов, возвращаемыхбазы данных и обрабатываются в вашем коде PHP.Вы должны структурировать свой запрос (в зависимости от типа базы данных), чтобы он возвращал только те записи, которые вам нужны, или как можно меньше записей для того, что вам нужно сделать.Существует множество баз данных, которые поддерживают довольно сложные операции непосредственно в запросе к базе данных, и обычно база данных делает это намного быстрее, чем PHP.

1 голос
/ 18 марта 2011

Два простых шага:

  1. Увеличьте объем памяти php, который можно использовать, установив memory_limit

  2. Установите больше ОЗУ

Серьезно, вам лучше оптимизировать свою базу данных, чтобы вы могли быстро получить данные, с которыми вам нужно работать.

Если вы действительно столкнулись с проблемами, то запустите анализатор запросов, чтобы увидеть, какие запросы занимают слишком много времени.Исправь их.Повторите процесс.

0 голосов
/ 31 августа 2018
  1. Вам не нужно хранить данные в массиве, это не имеет смысла.Структурируйте свой запрос в соответствии с вашей целью и затем извлекайте данные с помощью PHP.
  2. В случае, если вам нужно увеличить лимит памяти, вы можете изменить memory_limit в php.ini (или обновить .htaccess с желаемым пределом памятиphp_value memory_limit '1024M')
  3. Последнее, но не менее важное - используйте нумерацию страниц, а не загружать все данные сразу.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...