Название подводит итог. Я достаточно хорошо разбираюсь в PHP и чувствую себя комфортно, заставляя его делать то, что мне нужно, со значениями, взятыми из MySQL, однако в интересах расширения моих знаний мне было интересно, возможно, это будет более эффективный метод в долгое время Являются ли они эквивалентными (из-за того, что в итоге они имеют примерно одинаковое количество обработки), или есть случаи, когда одно дает явное преимущество перед другим?
8
Ответы:
Это во многом зависит от того, что вы делаете с записями, и как выглядит ваша сетевая архитектура. Например, если хранимая процедура собирается уменьшить общий объем данных, передаваемых из MySQL в PHP, и у вас относительно медленная связь между экземпляром PHP и базой данных, SP, безусловно, может вам помочь.
Я бы порекомендовал вам начать с некоторых «более тяжелых» манипуляций, которые вы выполняете со своими данными на стороне PHP, посмотреть, что вы можете написать как SP, а затем сравнить его.
источник
Точка в пользу выполнения большей обработки в базе данных состоит в том, что база данных не может оптимизировать то, что она не видит. Например, если задать для свойства сохраняемого класса постоянное значение для всех экземпляров, это определенно будет работать лучше, если это будет сделано на уровне базы данных.
Противоположным является то, что базы данных хороши в операциях на основе множеств, но не так хороши в операциях на основе строк. Например, что-то вроде преобразования времени UTC в местное время на основе часового пояса, варьирующегося в зависимости от строки, может работать не так хорошо в базе данных, как на уровне приложения.
источник
Обычно, если результатом является агрегирование (sum, avg, count), его вычисление на сервере базы данных происходит намного быстрее, избегая ненужной связи между сервером и клиентом. Кроме того, упорядочение и группировка могут принести пользу индексам, уменьшая объем вычислений.
источник