PreparedStatement et performances
Bonjour,
J'ai toujours entendu dire qu'utiliser des PreparedStatement permettait d'améliorer les temps d'exécution des requêtes grâce à la précompilation (si le driver la supporte).
Je ne doute pas que ça soit vrai dans un cas comme celui ci:
Code:
1 2 3 4 5 6 7 8 9
| PreparedStatement ps = connection.prepareStatement("SELECT ...");
for (...) {
// set des paramètres
ps.setObject(...);
// exécution
ResultSet rs = ps.executeQuery();
//exploitation du résultat
...;
} |
mais si l'instance de PreparedStatement n'est utilisée qu'une seule fois, par exemple:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| void methodA() {
for (int i=...) {
ResultSet rs = methodB(i);
//exploitation du résultat
...;
}
}
void methodB(int param) {
PreparedStatement ps = connection.prepareStatement("SELECT ...");
// set des paramètres
ps.setObject(param...);
// exécution
return ps.executeQuery();
} |
est-ce que c'est toujours le cas ?
J'ai (beaucoup) simplifié le code ci-dessus, car je me pose la question d'un point de vue théorique. Je sais qu'il faut libérer les ressources, etc. Je sais aussi qu'il ne faut pas chercher à optimiser avant d'avoir des problèmes de performance: je veux juste savoir si dans la façon de faire du deuxième cas les PreparedStatement sont pertinents.
Au passage il s'agit d'une connexion à une base DB2...
Merci d'avance