Cela vaut-il la peine de coder dans les procédures stockées ou dans le code (ou classe séparée). J'ai lu quelque part que les procédures stockées sont plus rapides dans leur exécution, parce qu'elles reposent sur la base de données, et il n'a pas besoin de faire l'étape d'interprétation quand il lit le code de php. J'aime coder dans un fichier séparé le code mysql dont j'ai besoin et le référencer à partir de là. Cela ferait-il une différence si j'utilisais des procédures stockées?Procédures stockées et mysql
Répondre
J'ai récemment rencontré ce problème. L'utilisation de procédures stockées sur le DB est beaucoup plus rapide. Lorsque vous créez le SP, il le compile en un code intermédiaire qui peut s'exécuter plus vite que l'analyse des instructions SQL standard au moment de l'exécution. AUSSI le plus grand avantage de SP est que vous pouvez passer dans certains paramètres, et vous pouvez faire le SP faire une charge de travail sur la DB, qui peut être contrôlée en utilisant les instructions IF ELSE et CASES, cela maintient également le trafic entre votre application et la base de données à un minimum. Un dernier avantage pour SP, vous pouvez garder l'implémentation DB séparée de votre application, cela signifie que si vous faites une insertion à 10 endroits différents dans votre application, vous changez la façon dont l'insertion doit être faite , vous devez revenir en arrière et changer cet insert dans ces 10 endroits différents, alors que si vous avez utilisé un SP pour encapsuler l'insert, vous pouvez simplement changer ce SP à la volée et l'application n'a pas besoin de savoir;)
Si vous écrivez déjà votre code SQL, alors vous êtes pratiquement 75% à écrire sur les SP
EDIT: Si vous utilisez PHP MySQLi, vous pouvez ou non savoir que l'appel est stocké ures renvoie 2 ensembles de lignes par opposition aux requêtes standard qui ne renvoient que 1, mais ce problème n'est pas trop important tant que vous le savez :-)
Si vous utilisez des procédures stockées, le code pour les générer existera de manière similaire à la façon dont vous stockez vos instructions CREATE TABLE
. Il n'aura probablement aucune interaction avec votre code PHP. Les procédures stockées sont stockées dans MySQL de la même manière que les tables et les vues - vous les créez rarement à l'exécution avec du code.
Il suffit donc de créer un fichier appelé procedures.sql
pour coder vos procédures stockées et les charger dans la base de données comme vous le feriez avec vos instructions CREATE TABLE
. Après l'exécution des instructions CREATE PROCEDURE
de leur fichier SQL, il peut être supprimé de votre serveur Web. Il ne devrait pas résider dans un espace accessible sur le Web.
Les procédures stockées et les instructions préparées offrent des gains de performance et de sécurité. L'avantage des procédures stockées par rapport aux instructions préparées est que votre logique de base de données peut être découplée de votre code d'application. Cela vous permet d'effectuer les mêmes actions de base de données à partir de différentes interfaces d'application, si cela est nécessaire.
Mais y a-t-il des gains de performance et de sécurité à utiliser les procédures stockées –
@DmitryMakovetskiyd Oui il y a. Je ne préconise pas de les utiliser, juste en expliquant comment ils sont utilisés. –
Avez-vous des sources d'information où je peux lire comment les utiliser avec mysql..phpmyadmin? –
Voir: http://searchsqlserver.techtarget.com/news/1052737/Why-use-stored-procedures.
Fondamentalement, il est préférable que vous conserviez la logique de la base de données dans la base de données et que vous ne brouilliez pas votre code PHP avec sql, ce qui peut être difficile à maintenir. En outre, puisque les procédures stockées sont compilées, elles fonctionnent mieux.
- 1. Procédures MySQL stockées et requêtes MySQL dynamiques
- 2. Procédures stockées MySQL
- 3. Mysql Procédures stockées
- 4. Procédures stockées MySQL
- 5. Procédures stockées MySql, transactions et annulations
- 6. MySQL - ensemble de procédures stockées et rondes
- 7. Kohana 3.2 et MySQL procédures stockées
- 8. Procédures stockées MySQL, paramètres C# et inout
- 9. [MySQL]: procédures stockées et instructions de sélection
- 10. Procédures stockées MySQL dans SVN
- 11. Profil Procédures stockées dans MySQL
- 12. MySql Procédures stockées Paramètre Échapper
- 13. comment lancer MySQL procédures stockées
- 14. Procédures et fonctions stockées
- 15. Variables et procédures stockées
- 16. Procédures stockées et banques
- 17. Procédures stockées et variables
- 18. DataList et procédures stockées
- 19. Différence entre les procédures stockées et les procédures stockées étendues
- 20. Procédures stockées
- 21. MySQL où placer les procédures stockées?
- 22. polymorphisme alternative pour les procédures stockées MySQL
- 23. Comment sauvegarder des procédures stockées dans MySQL
- 24. MySQL Simple Select - Performances des procédures stockées
- 25. MYSQL Exécution de procédures stockées utilisant DbVisualizer
- 26. mysql procédures stockées en utilisant php
- 27. Procédures stockées à l'aide de MySQL Workbench
- 28. Type de colonne Procédures stockées Mysql Référence
- 29. Procédures stockées et SSRS 2008
- 30. Procédures stockées et tests unitaires
Une application PHP correctement écrite va de toute façon avoir une couche d'abstraction DB distincte. Donc, une modification de la syntaxe d'insertion * devrait * avoir toujours un seul point de révision. Cela étant dit, vous avez toujours raison de dire que les SP s'exécutent plus rapidement, ce qui fait que c'est toujours une bonne idée basée uniquement sur la performance. – Nilpo