with utilizarlos stored procedimientos procedimiento para mostrar mandar llamar ejercicios desde datos crear almacenados almacenado php mysql stored-procedures

utilizarlos - ¿Los procedimientos almacenados son un no-go en el mundo de php/mysql?



procedimientos almacenados en mysql y utilizarlos en php (10)

Cito parte de una respuesta que recibí por otra pregunta mía :

En el mundo de PHP / MySQL diría que los procedimientos almacenados son no-go

Me gustaría saber: ¿es eso así? ¿Por qué? Por qué no?

[edit] Me refiero a esto como una pregunta general sin una necesidad específica en mente [/ edit]


¿Tiene una necesidad específica en mente que lo haga considerarlos? Los procedimientos almacenados son mucho menos portátiles que el SQL "simple", por eso la gente no quiere usarlos. Además, habiendo escrito una porción justa de PL / SQL, debo decir que la forma de escritura de código agrega complejidad y no es muy moderna ni comprobable. Podrían ser útiles en algunos casos especiales en los que necesitas optimizar, pero ciertamente lo pensaría dos veces. Jeff tiene opiniones similares .


Al usar procedimientos almacenados con MySQL, a menudo necesitará usar la interfaz mysqli en PHP y no la interfaz regular de MySQL .

La razón de esto se debe al hecho de que los procedimientos almacenados a menudo devolverán más de 1 conjunto de resultados. Si lo hace, la API de mysql no puede manejarlo y obtendrá errores.

La interfaz mysqli tiene funciones para manejar estos conjuntos de resultados múltiples, funciones como mysqli_more_results y mysqli_next_result .

Tenga en cuenta que si devuelve cualquier conjunto de resultados del procedimiento almacenado, entonces necesita usar estas API, ya que el procedimiento almacenado genera 1 conjunto de resultados para la ejecución real, y luego 1 adicional para cada conjunto de resultados devuelto intencionalmente el procedimiento almacenado.


Creo que el uso de procedimientos almacenados puede ofrecer cierta abstracción en ciertas aplicaciones, ya que en cualquier lugar en el que use el mismo fragmento de código SQL para actualizar o agregar los mismos datos, podría crear el único sproc save_user ($ attr ..... ) en lugar de repetirse todo el lugar.

Acordó que la sintaxis es peluda y si estás acostumbrado a los scripts MSSQL y Oracle existen diferencias que pueden frustrar.


Desarrollo y mantengo una gran aplicación PHP / MySQL. Aquí está mi experiencia con los procedimientos almacenados.

Con el tiempo, nuestra aplicación se ha vuelto muy compleja. Y con toda la lógica en el lado php, algunas operaciones consultarían la base de datos con más de 100 consultas breves.

MySQL es tan rápido que el rendimiento aún era aceptable, pero no excelente.

Tomamos la decisión en nuestra última versión del software para mover parte de la lógica a los procedimientos almacenados para operaciones complejas.

Logramos un aumento significativo en el rendimiento debido al hecho de que no tuvimos que enviar datos entre PHP y MySQL.

Estoy de acuerdo con los otros carteles aquí que PL / SQL no es un lenguaje moderno y es difícil de depurar.

Conclusión: los procedimientos almacenados son una gran herramienta para ciertas situaciones. Pero no recomendaría usarlos a menos que tengas una buena razón. Para aplicaciones simples, los procedimientos almacenados no valen la pena.


Esta es una pregunta subjetiva.

Personalmente incluiría todos los cálculos dentro de PHP y solo usaría MySQL como tabla.

Pero, si cree que es más fácil utilizar procedimientos almacenados, entonces, por supuesto, adelante y hágalo.


Hago un uso limitado de los procedimientos almacenados, y funciona bien. Soy el desarrollador principal de uno de los clientes de mi empresa, trabajando en su sitio web de e-comm. El cliente tiene un sistema de inventario, implementamos un conjunto de procedimientos almacenados en su sistema y construimos una API para comunicarnos con él. Esto nos permitió abstraer su base de datos y podrían implementar lógica en los procedimientos almacenados. Simple pero cumplió muy bien el requisito comercial.


No diría que "los procedimientos almacenados son un no-ir", yo diría "No los use sin una buena razón".

Los procedimientos almacenados de MySQL tienen una sintaxis particularmente horrible (Oracle y MSSQL son bastante horribles también), mantenerlos simplemente complica su aplicación.

Utilice un procedimiento almacenado si tiene un motivo real (mensurable) para hacerlo, de lo contrario no lo haga. Esa es mi opinión de todos modos.


También debe tener en cuenta que los procedimientos almacenados no eran compatibles con Mysql antes de la versión 5.0. http://dev.mysql.com/doc/refman/5.0/en/stored-routines.html También los procedimientos almacenados tienden a ser un poco raros en esa implementación. Ahora que Mysql 5.1 está comenzando a aparecer en la naturaleza, veo un mayor uso de los procedimientos almacenados con Mysql.


Por lo general, me mantengo alejado de los procedimientos almacenados porque agrega carga a la base de datos, que es el 99% del tiempo, el mayor cuello de botella. Agregar un nuevo servidor php no es nada comparado con hacer que su base de datos MySQL se replique.


Posiblemente hay una fobia de los procedimientos almacenados con mysql, en parte debido a que no es abrumadoramente poderosa (en comparación con Postgresql e incluso MSSQL, los procedimientos almacenados de mysqls son muy escasos).

Sobre el plus: facilitan la interacción con él desde más de un idioma.

Si alguien afirma que " usar procedimientos almacenados es malo porque no es portátil para diferentes bases de datos ", esto significa que creen que es probable que cambies de base de datos, lo que significa que a su vez dicen que creen que no deberías usar mysql.

Es popular usar ORM en estos días, pero personalmente creo que ORM es un BadThing ( Pregunta: 82882 )