C'est surtout en fait que le système de connection standard de PHP ouvre et ferme une connection a chaque execution (comme le dit Mara's dad) et que du coup, Oracle ne garde pas en cache le plan d'éxécution de la requête. Et la compilation d'une requête peut d'avérer très gourmand.
Depuis SQL Plus, on voit très bien la chose : lance une requête ultra complexe. Ca prends mettons 5 secondes, avec une charge élevée sur le serveur pendant une seconde.
Sans fermer SQL Plus, modifie les valeurs des filtres de la requête (sans changer les critères par contre !) et pouf ! La ca tombe a 1 seconde, avec une charge minimale sur le serveur : il s'est contenté de lire les données en suivant les indexes, ce qui est ridicule pour Oracle même s'il y a des millions de lignes à lire.
Le système que préconise Mara's dad est effectivement une bonne solution, puisque l'utilisation d'un pool de connections passant par une connection unique et persistante permet a Oracle de conserver en cache ces plans d'execution.
Par contre, pour ce qui est de l'ouverture de la connection elle-même, je suis pas convaincu
Message édité par Arjuna le 16-06-2004 à 18:05:59