El título lo resume. Estoy razonablemente bien con PHP, y me siento cómodo haciendo que haga lo que necesito con valores extraídos de MySQL, sin embargo, con el interés de expandir mi conocimiento, me he estado preguntando si tal vez sería una técnica más eficiente en el largo plazo. ¿Son equivalentes (debido a que son aproximadamente la misma cantidad de procesamiento al final), o hay casos en que uno presenta una clara ventaja sobre el otro?
8
Respuestas:
Depende mucho de lo que esté haciendo con los registros y de cómo se vea su arquitectura de red. Por ejemplo, si el procedimiento almacenado va a reducir la cantidad total de datos transmitidos de MySQL a PHP, y tiene un vínculo relativamente lento entre la instancia de PHP y la base de datos, un SP ciertamente podría ayudarlo.
Le recomendaría que comience con algunas de las manipulaciones 'más pesadas' que realiza en sus datos en el lado de PHP, vea lo que puede escribir como SP y luego realice una evaluación comparativa.
fuente
Un punto a favor de hacer más procesamiento en la base de datos es que la base de datos no puede optimizar lo que no ve. Como ejemplo, establecer una propiedad de una clase persistente en un valor constante para todas las instancias definitivamente funcionará mejor si se hace en la capa de la base de datos.
Un punto en contra es que las bases de datos son buenas en operaciones basadas en conjuntos, pero no tan buenas en operaciones basadas en filas. Por ejemplo, algo como convertir una hora UTC a hora local en función de una zona horaria que varía por fila puede no funcionar tan bien en la base de datos como en la capa de la aplicación.
fuente
Por lo general, si el resultado es una agregación, (suma, promedio, recuento) es mucho más rápido computarlo en el servidor de la base de datos, evitando la comunicación innecesaria entre el servidor y el cliente. Además, ordenar y agrupar puede beneficiarse de los índices, reduciendo la cantidad de cómputo.
fuente