Bonjour a tous,

Je travaille sur une appli client/serveur (Perl / Oracle) et mon code est tres lent et je viens de me rendre compte de quelque chose...

Tout d'abord, j'ai essayé d'afficher ma page sans aucune requete sur la base de données. L'affichage est tres rapide.

Lorsque je remet toutes les requetes, l'affichage devient super long. Mais vous allez me dire q cest normal, ce que je comprend tout a fait.

Par contre, j'ai étudié comment été faites les requetes. A chaque requete, on fait un appel a la fonction bd_select :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
$req = fich->bd_select($login, $pass, "select...");
Cette fonction bd_select est la suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
sub bd_select{
  my $login = $_[1];
  my $pass = $_[2];
  $dbh = DBI->connect(...) ;
  my $sql = $_[3];
  if ($dbh) {    
    $sth = $dbh->prepare($sql) or die "Can't prepare statement : ", DBI::errstr;
    $rc = $sth->execute or die "Can't execute statement : ", DBI::errstr;
    my $array = $sth->fetchall_arrayref;
    $sth->finish;
    $dbh->disconnect();
    return $array;
  }
 else {
    return ("error");
  }
}
Cela signifie que pour la moindre requete, on ouvre la connexion a la base Oracle, on fait la requete et on referme la connexion.

Est ce qu'il ne serait pas mieux d'ouvrir la connexion en debut de script, faire les differentes requetes dont on a besoin, et refermer la connexion en fin de script.
Je procede comme ca avec php/Mysql, je ne sais pas si c'est faisable dans le cas de Perl/Oracle, mais je pense que si ca marchait, on gagnerait un temps considerable puisqu'il me semble que la connexion a une base Oracle est une opération couteuse en temps.

Qu'en pensez vous?

Merci a tous