PHP / mysql - Запросы против массивов? - PullRequest
3 голосов
/ 26 ноября 2011

Я пишу довольно простое веб-приложение, которое извлекает данные из 3 таблиц в базе данных MySQL. Поскольку мне не нужна тонна расширенной фильтрации, теоретически кажется, что она быстрее создается и затем работает в больших многомерных массивах вместо выполнения запроса mysql, когда это возможно.

Теоретически я мог бы просто получить по одному запросу из каждой таблицы и создать большие массивы с результатами, по сути, больше не нужно было бы запрашивать эту таблицу снова. Это хорошая практика, или лучше просто запрашивать данные, когда они нужны? Или есть какой-то баланс, и если да, то что это?

Ответы [ 4 ]

1 голос
/ 26 ноября 2011

Массивы PHP могут быть очень быстрыми, но это зависит от того, насколько велики эти таблицы, когда цифры станут огромными, MySQL будет быстрее, потому что при правильных индексах ему не придется сканировать все данные, но просто выберите те, которые вам нужны.

Я не рекомендую вам попробовать то, что вы предлагаете, MySQL имеет кеш запросов, поэтому повторяющиеся запросы даже не попадут на диск, так что оптимизация, о которой вы думаете, уже выполнена.

Наконец, как сказал Крис, никогда не думайте об оптимизации, когда она не нужна.

Что касается хороших практик, то хорошей практикой является написание простейшего (и легко читаемого) кода, который выполняет свою работу.

Если в итоге вы решите применить оптимизацию, профилировать производительность, вас могут удивить неожиданные результаты.

1 голос
/ 26 ноября 2011

это зависит ...

Попробуйте каждое решение с функцией microtime, и вы увидите результаты.

Я думаю, что кеш MySQL Query может быть хорошим решением.и если вы включили фильтрацию, вы можете создать представление.

0 голосов
/ 27 ноября 2011

Я абсолютно согласен с Крисом в отношении оптимизации: стек LAMP является хорошим решением для 99% веб-приложений без какой-либо необходимости в оптимизации.Оптимизируйте ТОЛЬКО, если вы действительно столкнулись с проблемой производительности.

Еще одна мысль для вашей ментальной модели баз данных php +: вы не учли, что чтение большого количества данных из базы данных в php также требует времени.

0 голосов
/ 26 ноября 2011

Если вы можете выполнить это одним запросом - сделайте это!В вашем случае я бы сказал, что это хорошая практика.Вы также можете подумать о том, чтобы хранить ваши данные в CSV-файле или аналогичном файле, что обеспечит вам еще большую производительность.

...