PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → Lenteur MaTable..Occurence
Lenteur MaTable..Occurence
Iniciado por José, 20,feb. 2019 14:17 - 4 respuestas
Miembro registrado
123 mensajes
Publicado el 20,febrero 2019 - 14:17
Bonjour à tous
J'utilise MaTable..Occurence pour afficher le nombre d’enregistrement d'une table qui a environ vingt colonnes .
L'affichage de la table(alimentée par une requête) est immédiat à l'ouverture de la fenêtre
Puis j'ai entre cinq et six secondes avant d'avoir la main sur une table de 6200 enregistrement.
Si je n'utilise pas la fonction MaTable.occurence , j'ai la main immédiatement
Est-ce normal ou est-ce une fonction à ne pas utiliser, et dans ce cas quelle est la fonction la plus rapide pour compter le nombre de lignes d'une tables

Merci

José
Miembro registrado
86 mensajes
Publicado el 20,febrero 2019 - 14:25
Je ne suis pas utilisateur de HF/SQL mais ce que tu décris me semble logique.
L'affichage doit se faire avec un fetch et est donc immédiat.
Par contre un table..occurence doit rapatrier toute la requête pour la table afin de connaître la nombre ligne total.
Pourquoi ne pas fait une requête count() à la place ? Cela devrait être beaucoup plus rapide.

--
Benoit Neve
Miembro registrado
123 mensajes
Publicado el 20,febrero 2019 - 17:01
Merci Benoit pour ta réponse

Le problème est qu'une fois la table chargée, le client peut filtrer certaine colonnes pour des recherches, et je voulais rafraîchir le nombre après chaque action de filtrage.
Donc le count() ne serait bon qu'à l'affichage initial.
Miembro registrado
123 mensajes
Publicado el 20,febrero 2019 - 17:19
Une autre question dans le même esprit
Si je veux remplir la table avec la totalité du fichier, il vaut mieux associer le fichier à la table ou une requête sans condition pour qu'elle contienne la totalité du fichier. Quelle option sera la plus rapide (base HFSQL C/S)

Merci
Miembro registrado
86 mensajes
Publicado el 20,febrero 2019 - 18:28
José,

Avec j'espère moins de fautes d'orthographe...
Personnellement, voici ce que je fais.
J'utilise uniquement des tables mémoire et jamais de tables fichier ou tables sur requête.

J'ajoute au dessus de ma table les champs de recherche. Je construis dynamiquement ma requête sur base des champs complétés par l'utilisateur.
J'exécute ma requête avec un SQLExec et puis je fais un SQLTable ou une boucle pour alimenter ma table mémoire. Et pour couronner le tout, le nombre de résultats par défaut est de 100. Un utilisateur va toujours préférer affiner sa recherche que de parcourir les 2421 résultats pour trouver son bonheur. Ceci dit, cette dernière limite peut être adaptée par l'utilisateur avec le nombre de résultats qu'il désire ou même obtenir tous les résultats.

En SQL Server, les temps de réponse sont excellents.

--
Benoit Neve