27 octobre 2009
publié par 
L'exécution de la commande HLitRecherche*() en HFSQL Client/Serveur provoque l'exécution d'une requête qui ne retourne qu'un seul enregistrement. Lorsque vous avez besoin d'obtenir une information unique d'un fichier, c'est évidemment la bonne commande à utiliser.

Par contre, lorsque ce traitement est intégré dans une boucle (cas de parcours imbriqués) , cela provoque de nombreuses requêtes sur le serveur. Ces requêtes ne traitant que très peu de données (1 seule ligne de résultat), elles seront enchaînées de manière très rapide par le serveur ce qui a tendance à provoquer une utilisation importante du CPU et donc ralentir le traitement des autres requêtes.

Dans ce cas, il est plus performant d'utiliser une requête globale qui contient à la fois les données du fichier principal et les données reliées. On évite ainsi un Aller/Retour avec le serveur à chaque tour de boucle et on sollicite moins le CPU serveur.


Cas des tables fichiers :
On retrouve exactement le même cas de figure lorsque l'on utilise une table fichier avec colonne multi-fichier. En effet, pour chaque ligne de la table, une recherche va être réalisée sur le serveur. Si vous avez 2000 enregistrements, cela va provoquer 2000 requêtes supplémentaires. Pour 100 utilisateurs, cela représentera 200 000 requêtes.

< Retour