Administrateur PHPfrance |
3131 Messages
21 janv. 2009, 08:40
De ce que j'ai compris avec Oracle, le fonctionnement est le suivant :
- tu demandes au système de "préparer" une requête du style "SELECT * FROM tb WHERE ch1 = :1 AND ch2 = :2"
- à ce moment là il prépare les données pour être facilement récupérées selon ces deux critères ch1+ch2 (en gros, il crée une vue avec un index optimisé sur ces champs)
- il va alors chercher les données grâce à cet index, ce qui va beaucoup plus vite et prend moins de mémoire (dans les cas de jointures, il ne va pas consulter n tables mais seulement le résultat de la préparation).
- les prochaines requêtes que tu lui demanderas de préparer avec la même forme (memes tables, et mêmes champs concernés) auront leur résultat directement issu de cette préparation, et seront donc immédiatement résolues.
De manière générale, les experts Oracle m'ont tous dit "TOUTES les requêtes doivent être "bindées" (c'est l'équivalent de préparer), on n'y perd pas grand chose à la première requête, et par contre on y gagne énormément pour toutes les suivantes".
Je ne sais pas si ce conseil est valable sur toutes les BDD mais j'imagine que c'est du même ordre
Edit : j'ai tapé un peu à côté de la réponse attendue, donc pour rencentrer je dirais que non, ça n'a pas d'intérêt a priori de préparer une requête sans paramètre, mais comme ça n'aura normalement aucun impact négatif non plus, autant le faire aussi
