next up previous
suivant: Les accès dynamiques monter: Les accès aux bases précédent: Accéder aux bases de

Sous-sections

Optimiser l'accès aux BD

De l'utilisation des méthodes prepareStatement() et prepareCall().

Deux types d'optimisation : les instructions prédéfinies (le plan d'accès aux tables n'est fait qu'un fois), et les procédures stockées (compilées dans le SGBD).

Les instructions prédéfinies

Dans le cas d'un ensemble de requêtes similaires, il est préférable, au lieu de répéter N fois s.execute(requete), de signaler au SGBD qu'il va devoir faire N fois la même chose sur des données différentes. Ainsi le SGBD ne recalcule pas son plan d'exécution entre deux requêtes successives.


PreparedStatement ps = connection.preparedStatement(requeteAvecParametres);
for (int i=0; i < N; i++) {
    s.setFloat(1,parametre1());
    s.setInt(2,parametre2());
    s.execute();
}
connection.commit();
s.close();

Les procédures stockées

Il est possible de faire appel directement aux procédures stockées, si l'on connaît son nom, ses entrées et ses sorties.


CallableStatement ps = connection.preparedCall("{call procStockee[(?,?)]}");
ps.registerOutParameter(1,java.sql.Types.FLOAT);
for (int i=0; i < N; i++) {
    ps.setInt(2,parametre2());
    ps.execute();
}
connection.commit();
s.close();



Alain GRIFFAULT
2000-10-30