Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[WD9] lenteur de la première requète Sql sur HyPerfile

13 réponses
Avatar
Jean Cougnaud
Bonjour,

J'ai un petit souci au sujet des requètes Sql (hExecuteRequeteSql) sur des
fichiers hyperfile.

J'ai une fenêtre de recherche contenant une table mémoire que je remplis
avec une requète Sql sur un seul fichier. Celui-ci contient environ 10 000
enregistrements (ce qui n'est vraiment pas énorme). La première fois que je
lance la requète devant me renvoyer tout le fichier cela met au moins 20s.
Les fois suivantes cela est presque instantané et cela jusqu'à ce que je
relance mon PC.

L'analyseur de performance me donne une durée de hExecuteRequeteSql très
rapide mais c'est entre le début de l'analyseur et le hExecuteRequeteSql que
cela prend 19s. Je trouve cela étrange. On dirait qu'il initialise quelque
chose ?

Est-ce normal ?

Y a-t-il quelque chose à initialiser avant la requète pour que cela soit
rapide dès la première fois ?

Merci de vos conseils.

Cordialement

Jean Cougnaud
www.jean-cougnaud.com

10 réponses

1 2
Avatar
Vincent
Jean Cougnaud a écrit :
Bonjour,

J'ai un petit souci au sujet des requètes Sql (hExecuteRequeteSql) sur des
fichiers hyperfile.

J'ai une fenêtre de recherche contenant une table mémoire que je remplis
avec une requète Sql sur un seul fichier. Celui-ci contient environ 10 000
enregistrements (ce qui n'est vraiment pas énorme). La première fois que je
lance la requète devant me renvoyer tout le fichier cela met au moins 20s.
Les fois suivantes cela est presque instantané et cela jusqu'à ce que je
relance mon PC.

L'analyseur de performance me donne une durée de hExecuteRequeteSql très
rapide mais c'est entre le début de l'analyseur et le hExecuteRequeteSql que
cela prend 19s. Je trouve cela étrange. On dirait qu'il initialise quelque
chose ?

Est-ce normal ?

Y a-t-il quelque chose à initialiser avant la requète pour que cela soit
rapide dès la première fois ?

Merci de vos conseils.

Cordialement

Jean Cougnaud
www.jean-cougnaud.com




j'ai exactement le même pb : 45s pour le premier accès sur 20000
enregistrement. et hélas pas de solution pour l'instant :-(
Avatar
mat
Jean Cougnaud wrote:
Bonjour,

J'ai un petit souci au sujet des requètes Sql (hExecuteRequeteSql)
sur des fichiers hyperfile.

J'ai une fenêtre de recherche contenant une table mémoire que je
remplis avec une requète Sql sur un seul fichier. Celui-ci contient
environ 10 000 enregistrements (ce qui n'est vraiment pas énorme). La
première fois que je lance la requète devant me renvoyer tout le
fichier cela met au moins 20s. Les fois suivantes cela est presque
instantané et cela jusqu'à ce que je relance mon PC.

L'analyseur de performance me donne une durée de hExecuteRequeteSql
très rapide mais c'est entre le début de l'analyseur et le
hExecuteRequeteSql que cela prend 19s. Je trouve cela étrange. On
dirait qu'il initialise quelque chose ?




Bonjour,

HF classic ou C/S? Avec HF classic, une requête avec un résultat de
10000 enregistrements peut toujours prendre un bon moment, p.ex. en
utilisant hNbEnr. Contrairement à d'autre produits qui ne mémorisent que
les lignes affichés ou gardent tout le résultat sous forme de fichier
dans un disque virtuel en RAM, avec HF les 10 000 lignes sont lues en
mémoire une par une. Peut-être, il faudrait parler d'un filtre avec
syntaxe SQL.

Par contre, le nombre d'enregistrements (au moins au niveau de quelques
milles ou dix milles que j'ai testé) n'a pour ainsi dire pas d'influence
sur les temps de réponse.

Si la requête prends plus de temps la première fois, je m'imagine que
les données ne se trouvent simplement pas encore dans le cache disque ou
en mémoire.

Salutations
mat
Avatar
Real Phil
> Bonjour,

J'ai un petit souci au sujet des requètes Sql (hExecuteRequeteSql) sur des
fichiers hyperfile.

J'ai une fenêtre de recherche contenant une table mémoire que je remplis
avec une requète Sql sur un seul fichier. Celui-ci contient environ 10 000
enregistrements (ce qui n'est vraiment pas énorme). La première fois que


je
lance la requète devant me renvoyer tout le fichier cela met au moins 20s.
Les fois suivantes cela est presque instantané et cela jusqu'à ce que je
relance mon PC.

L'analyseur de performance me donne une durée de hExecuteRequeteSql très
rapide mais c'est entre le début de l'analyseur et le hExecuteRequeteSql


que
cela prend 19s. Je trouve cela étrange. On dirait qu'il initialise quelque
chose ?

Est-ce normal ?


=============================================== Bonjour,

Bien sûr que c'est normal - et pour n'importe quel langage.
La première fois qu'on exécute un SQL, les données sont lues physiquement
sur le disque dur.
Par la suite, les informations sont lues dans le cache de la mémoire vive -
ce qui est considérablement plus rapide.

Réal Phil
Avatar
Vincent
Real Phil a écrit :
Bonjour,

J'ai un petit souci au sujet des requètes Sql (hExecuteRequeteSql) sur des
fichiers hyperfile.

J'ai une fenêtre de recherche contenant une table mémoire que je remplis
avec une requète Sql sur un seul fichier. Celui-ci contient environ 10 000
enregistrements (ce qui n'est vraiment pas énorme). La première fois que



je

lance la requète devant me renvoyer tout le fichier cela met au moins 20s.
Les fois suivantes cela est presque instantané et cela jusqu'à ce que je
relance mon PC.

L'analyseur de performance me donne une durée de hExecuteRequeteSql très
rapide mais c'est entre le début de l'analyseur et le hExecuteRequeteSql



que

cela prend 19s. Je trouve cela étrange. On dirait qu'il initialise quelque
chose ?

Est-ce normal ?



=============================================== > Bonjour,

Bien sûr que c'est normal - et pour n'importe quel langage.
La première fois qu'on exécute un SQL, les données sont lues physiquement
sur le disque dur.
Par la suite, les informations sont lues dans le cache de la mémoire vive -
ce qui est considérablement plus rapide.

Réal Phil




Pourquoi ce serait normal ?

Un petit exemple : France Prospect, application contenant les données
sur un CDROM, donc pas de serveur de base données.

Test :
Sélection d'enregistrement sur 2 critéres :
Taille de l'entreprise ( choix de 4 tranches sur 8)
Chiffre d'affaire (7 tranches sur 8)

Tps d'éxécution: 4 secondes => nb de réponses 925 200 (+affichage dans
une grille)

un autre exemple :
Je met 21000 enregistrement dans Access. je créé une requête analyse
croisée. je ferme la base.
Rédémarrage du pc (plus aucun cache). ouverture de la base 1s, ouverture
de la requete analyse croisée : 3s.

Maintenant, comment j'explique à mes clients qui ont des p4 3ghz que
c'est normal ?

Qui est le coupable ? Windev, l'Hyperfile, ou le développeur ?
Avatar
sebNews
>
un autre exemple :
Je met 21000 enregistrement dans Access. je créé une requête analyse
croisée. je ferme la base.
Rédémarrage du pc (plus aucun cache). ouverture de la base 1s, ouverture
de la requete analyse croisée : 3s.

Maintenant, comment j'explique à mes clients qui ont des p4 3ghz que
c'est normal ?

Qui est le coupable ? Windev, l'Hyperfile, ou le développeur ?




Bonjour,
Pour savoir, le mieux est de faire quelques tests :
- Vérifier les index sur les fichiers
- Avec HF mais sans le SQL
- Exemple faire une vue sur HF ( HcreeVue ) à la place de d'une requête
SQL
==> Quels sont les temps de réponse ?


Sébastien
Avatar
Vincent
sebNews a écrit :
un autre exemple :
Je met 21000 enregistrement dans Access. je créé une requête analyse
croisée. je ferme la base.
Rédémarrage du pc (plus aucun cache). ouverture de la base 1s, ouverture
de la requete analyse croisée : 3s.

Maintenant, comment j'explique à mes clients qui ont des p4 3ghz que
c'est normal ?

Qui est le coupable ? Windev, l'Hyperfile, ou le développeur ?





Bonjour,
Pour savoir, le mieux est de faire quelques tests :
- Vérifier les index sur les fichiers
- Avec HF mais sans le SQL
- Exemple faire une vue sur HF ( HcreeVue ) à la place de d'une requête
SQL
==> Quels sont les temps de réponse ?


Sébastien




Quel est le plus rapide normalement ?
Avatar
sebNews
> > Bonjour,
> Pour savoir, le mieux est de faire quelques tests :
> - Vérifier les index sur les fichiers
> - Avec HF mais sans le SQL
> - Exemple faire une vue sur HF ( HcreeVue ) à la place de d'une


requête
> SQL
> ==> Quels sont les temps de réponse ?
>
>
> Sébastien
>

Quel est le plus rapide normalement ?



Je n'utilise pratiquement que des Vues.
Des vues sur des tables de 80 000 enregistrement avec
environ 20 rubrique dont deux mémos sont rapides ( en réseau )

Par contre dans mon cas le nombre d'enregistrement restitué est faible
( quelques dizaines de ligne )

Sébastien
Avatar
Jean Cougnaud
Bonjour,

J'ai justement fait un test entre les vues et les requêtes sur Hyperfile et
le temps de réponse est pratiquement le même . J'ai un fichier d'environ 10
000 enregistrements et je les demande tous.

La première fois cela prend 15s et ensuite c'est 1s.

Les requêtes sur Hyperfile seraient des vues déguisées (ou inversement) ?

Cordialement

Jean

"sebNews" a écrit dans le message de news:
432ea6e6$0$14364$

> Bonjour,
> Pour savoir, le mieux est de faire quelques tests :
> - Vérifier les index sur les fichiers
> - Avec HF mais sans le SQL
> - Exemple faire une vue sur HF ( HcreeVue ) à la place de d'une


requête
> SQL
> ==> Quels sont les temps de réponse ?
>
>
> Sébastien
>

Quel est le plus rapide normalement ?



Je n'utilise pratiquement que des Vues.
Des vues sur des tables de 80 000 enregistrement avec
environ 20 rubrique dont deux mémos sont rapides ( en réseau )

Par contre dans mon cas le nombre d'enregistrement restitué est faible
( quelques dizaines de ligne )

Sébastien






Avatar
Daniel
Bonjour,
"Jean Cougnaud" writes:

Bonjour,

J'ai justement fait un test entre les vues et les requêtes sur Hyperfil e et
le temps de réponse est pratiquement le même . J'ai un fichier d'envi ron 10
000 enregistrements et je les demande tous.

La première fois cela prend 15s et ensuite c'est 1s.

Les requêtes sur Hyperfile seraient des vues déguisées (ou inversem ent) ?

Cordialement

Jean



Une vue au sens hyperfile n'a rien à voir avec vue
qu'on trouve dans les SGBDR. Car celà est impossible à faire sans
moteur.

La vue hyperfile permet uniquement de remonter une partie des
rubriques d'un fichier au lieu de la totalité d'où le gain de temps.

Concrètement si on fait sur une table de 100 champs :
"select * from test" on va remonter tous les champs
sur une vue avec le Champs1, Champs2 c'est la même chose que
"select champs1, champs2 from test"


Pour dire que faire test de vue sur hyperfile avec une table ayant peu
de champs ne sera pas parlant.

"sebNews" a écrit dans le message de news:
432ea6e6$0$14364$
>
>> > Bonjour,
>> > Pour savoir, le mieux est de faire quelques tests :
>> > - Vérifier les index sur les fichiers
>> > - Avec HF mais sans le SQL
>> > - Exemple faire une vue sur HF ( HcreeVue ) à la place de d'une
> requête
>> > SQL
>> > ==> Quels sont les temps de réponse ?
>> >
>> >
>> > Sébastien
>> >
>>
>> Quel est le plus rapide normalement ?
>
> Je n'utilise pratiquement que des Vues.
> Des vues sur des tables de 80 000 enregistrement avec
> environ 20 rubrique dont deux mémos sont rapides ( en réseau )
>
> Par contre dans mon cas le nombre d'enregistrement restitué est faible
> ( quelques dizaines de ligne )
>
> Sébastien
>
>
>
>





--
suivre ce lien pour répondre:
http://cerbermail.com/?2KrV3YZXnn
Daniel
;-)
Avatar
sebNews
>
La première fois cela prend 15s et ensuite c'est 1s.

Les requêtes sur Hyperfile seraient des vues déguisées (ou inversement) ?

Cordialement

Jean



C'est la question que je me pose depuis pas mal de temps.
Il faudra un jour que je prenne le temps de faire quelques tests.

Mais c'est vrai que la syntaxe est relativement proche.

Sébastien
1 2