2011-10-16 3 views
1

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

1

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 :-)

+0

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

2

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.

+0

Mais y a-t-il des gains de performance et de sécurité à utiliser les procédures stockées –

+0

@DmitryMakovetskiyd Oui il y a. Je ne préconise pas de les utiliser, juste en expliquant comment ils sont utilisés. –

+0

Avez-vous des sources d'information où je peux lire comment les utiliser avec mysql..phpmyadmin? –

Questions connexes