Optimisations HFSQL Client/Serveur : Ne pas garder en mémoire des requêtes non utilisées.
Tout au long de l'exécution de votre application, vous allez exécuter des requêtes pour remplir des tables, effectuer des parcours ou des comptages.
Toutes ces requêtes consomment de la mémoire sur le poste où l'application s'exécute. Souvent ces requêtes deviennent inutiles une fois le parcours effectué.
Pensez a utiliser la commande HAnnuleDéclaration pour libérer l'espace mémoire occupé par ces requêtes. |
|
|
|
|
|
Optimisations HFSQL Client/Serveur : Demander au serveur de préparer la requête le plus tôt possible.
L'exécution d'une requête sur le serveur s'effectue en 2 temps. La commande HExecuteRequête demande au serveur de préparer la requête et démarre le transfert des résultats.
En remontant le plus tôt possible cette demande de préparation, pendant le temps d'exécution des autres codes non liés à votre requête, la requête est préparée et le transfert en partie effectué.
Prenons un exemple, j'ai une fenêtre qui liste tous les clients... |
|
|
|
|
|
Optimisations HFSQL Client/Serveur : Eviter les traitements de type HLitRecherche() à l'intérieur une boucle
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... |
|
|
|
|
|
|
Optimisations HFSQL Client/Serveur : Utilisation de requêtes ou de filtres
Dans une base HFSQL Client/Serveur, lorsqu'une sélection d'enregistrements est nécessaire, il est plus intéressant de demander au serveur d'effectuer une requête de sélection que de demander les enregistrements de manière séquentielle avec un filtre. En effet, lors d'un parcours séquentiel de type :
HFiltre(CLIENT,DEPARTEMENT,"34000","34999")
HLitPremier(CLIENT,DEPARTEMENT)
TANTQUEPAS HEnDehors()
//Traitement
HLitSuivant()
FIN
La couche client demande le premier enregistrement au serveur, celui-ci lui retourne le premier... |
|
|
|
|
|
|
|
|