Bonjour,
J'ai migré une base paradox en firebird, je débute sous Firebird.
J'ai une table LIGF -> lignes de ventes qui contient 1 500 000 enrg avec des clés sur CODE_CLIENT et CODE_ARTICLE.
J'ai développé un programme D5 qui contient une fiche client. Quand je change de client, j'affiche dans une DBGrid les lignes de ventes de ce client (donc sur l'évènement ondatachange du dataset j'effectue une requete SQL du genre SELECT CODE_ARTICLE, QTE, PRIX FROM LIGF WHERE CODE_CLIENT = '2095', en fait je récupère une vingtaine de champ de la table LIGF).
L'exécution de cette requête prend environ 5 à 8 secondes (tout en étant seul sur la base), ce qui est trop lent pour mon client.
Auparavent, avec les tables paradox, j'utilisais un setrange sur la table LIGF, et le setrange s'exécutait en même pas 1 seconde.
Ici j'utilise le composant TIBQuery pour le SELECT. Je voudrais savoir si il y avait un moyen d'accélérer tout ça tout en sachant que le pb est peut-être matériel ?
La config du serveur : P3 800Mhz, 256Mo RAM, Disque SCSI, Reseau 10Mb sous Linux, c'est peut-être très léger mais je n'ai pour l'instant qu'un seul poste en test, sinon quelle configuration faudrait-il par la suite pour une cinquantaine de postes ?
Est-ce qu'en passant par un TIBTable, le traitement serait plus rapide ?
Autre chose de bizarre, j'ai la possibilité de filtrer ces lignes sur un code article en particulier, donc j'execute cette même requête sur LIGF avec une deuxième condition dans le WHERE CODE_ARTICLE = 'XBOX', et ici la rêquete s'execute en moins d'une seconde ???
Cette fiche client est assez utilisée et reste assez souvent ouverte (application MDI), est-ce que le composant TIBquery avec requête SQL select est-il adapté pour ce genre d'utilisation : la consultation ? Je me pose d'autant plus la question concernant le rafraîchissement des données. Comment rafraîchir de manière efficace ? Fermer et réouvrir la requête ? Y a-t-il un composant qui gère ça de façon automatique (afin d'éviter de passer par un bouton refresh ou un timer) ?
J'ai encore une question, ce programme est une application MDI. J'ai une fenêtre principale et 2 fenêtres enfants qui sont la fiche client et la fiche article.
Quand je passe d'une fenêtre à l'autre, il m'exécute à nouveau la requête TIBQuery (de façon automatique) et me perd la position dans la DBGrid, comment éviter cela ?
Dernière question, quand j'exécute une requête TIBQuery, l'application est occupée (sablier...) et ne me rend la main qu'après retour du résultat de la requête, est-il possible que l'application me rende la main avant et qu'elle continue de me renvoyer les lignes résultantes de la requête (dans ma DBGrid) au fur et à mesure ?
Merci d'avance. Un newbie sous Firebird.
Benj2007.
Partager