2009-07-17 5 views
1

Lié à ma question précédente: PHP and Databases: Views, Functions and Stored Procedures performance Juste pour faire une question plus spécifique concernant les grandes requêtes SELECT.PHP et Postgres: Visualiser vs SELECT, quand utiliser une vue?

Quand serait-il plus commode d'utiliser une vue au lieu d'écrire la requête SELECT dans le code et de l'appeler:

$connector->query($sql)->fetchAll(); 

Quels sont les facteurs à prendre en compte au moment de décider wether de son mieux pour utiliser un voir, ou laissez-le tel quel. Dites, si vous joignez plusieurs tables, sélectionnez une certaine quantité de données, etc

Je demande dans le contexte d'une grande application web (avec PHP & Postgres), et la recherche de performance et d'optimisation.

Répondre

1

Une chose à prendre en compte lorsque vous utilisez le code source PHP + vues (au lieu de seulement le code source PHP) est que vous avez maintenant deux types de sources de modifier lorsque vous mettez à jour votre application:

  • vous devez mettre les nouvelles sources de PHP sur le serveur
  • et vous devez mettre à jour les vues

et vous devez parfois faire exactement en même temps si vous ne voulez pas que votre demande crash ... Ou vous devez programmer en pensant que l'application doit fonctionner correctement avec une version obsolète/plus récente des vues (pour quelques secondes).

Autre chose que vous pourriez avoir à considérer est la version: les scripts PHP versionning est facile: il suffit d'utiliser SVN et son tout droit, comme c'est les fichiers texte. Avec les vues, pour obtenir le même type de versionnage, vous devez travailler dans des fichiers texte (validés sur le SVN avant de les mettre à jour sur le serveur de production DB) et les conserver en synchronisation avec le serveur DB. Personnellement, j'utilise généralement des vues/procédures stockées quand il y a vraiment une différence: par exemple, si un calcul nécessite des milliers de requêtes SQL (et, ainsi, , des milliers d'appels de PHP, l'attente de la réponse, et ainsi de suite) ou trop d'échanges de données entre les deux serveurs, en utilisant un proc stocké peut vraiment être génial!

(Jamais utilisé postgre, mais l'idée est la même avec d'autres produits)

Questions connexes