IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

[WD10] performance de l'acces natif Mysql


Sujet :

WinDev

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    167
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 167
    Par défaut [WD10] performance de l'acces natif Mysql
    Bonjour,

    Je suis très surpris de voir la différence de vitesse dans les traitements pour attaquer une base Mysql à partir de windev:

    La façon suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SQLConnect(.............MaBaseMySQL......)
    SQLExec("SELECT * FROM MaTable,"REQ1")
    SQLPremier("REQ1")
    TOTO = SQLCol("REQ1",1)
    Est beaucoup plus rapide que d'importer la structure des tables MySql dans l'analyse Windev et d'utiliser ensuite:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    HlitPremier(MaTable)
    TOTO =MaTable.Nom
    Dans le 2ème cas, il y a moins de code à taper et j'avoue que c'est plus confortable de travailler comme ça. Hélas, le temps de traitement est plus long!

    (Mon appli a pour but de transferer les données provenant d'un fichier xml vers une base MySql)

    avez-vous des avis sur cette différence de temps???

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Par défaut
    Il parait qu'il faut ajouter hSansRafraichir lors de l'utilisation de HLitPremier. Ceci aurait pour effet de ne pas réexecuter la requête et d'économiser du temps.

    Testez et donnez le résultat, ça peut être intéressant.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    167
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 167
    Par défaut
    Ah ouai ??

    Et bien je m'en vais tester ça de suite......

  4. #4
    Membre expérimenté Avatar de Gilles_69
    Inscrit en
    Décembre 2007
    Messages
    209
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 209
    Par défaut
    Salut,
    ce test m'a intrigué et donc j'ai fait un essai. Le résultat est éloquent. A partir de WD12 (désolé) voici les résultats :
    - table MySQL de 435000 enreg.
    - parcours simple comme décrit dans le post, avec une petite somme sur un champ numérique au passage.
    - même interface graphique
    - tests effectués 5 fois pour relever des valeurs moyennes
    Résultats :
    Avec hLitxxx -> 27 s
    Avec SQLxxx -> 5 s
    Le confort a un prix !!!

  5. #5
    Membre Expert

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Par défaut
    Pour les ordres H* tu as essayé avec le fameux hSansRafraichir ?

    Je ne l'ai pas testé moi même car je n'ai pas de projet avec des ordres H sous la main. C'est quelquechose que j'ai entendu souvent mais sans jamais avoir de tests pour confirmer quels sont les gains, c'est pour ça que j'aimerais bien savoir.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    167
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 167
    Par défaut
    merci pour ce test qui vient conforter mon idée.

    Imagine la différence de temps lorsqu'il s'agit d'effectuer de gros traitements...

    Je n'en reviens pas et surtout je ne comprends pas!


    Sinon je n'ai pas essayer le "Hsansrafraichir" pour la bonne raison que je fais uniquement de l'ajout car je pars d'une base MySql vide, et je n'ai pas besoin de la parcourir... dslé

  7. #7
    Membre expérimenté Avatar de Gilles_69
    Inscrit en
    Décembre 2007
    Messages
    209
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 209
    Par défaut
    Je viens d'essayer l'ajout de Hsansrafraichir sous la forme suivante :
    HLitPremier(tblheures,"",hSansRafraîchir)
    et aucune amélioration.

    A+

  8. #8
    Membre Expert

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Par défaut
    Moi les ordres H*, j'ai vite arrêté. Le confort que ça offre est à mes yeux très relatif et masque trop souvent des choses qui peuvent s'avérer gênantes car non maîtrisées.

    J'utilise exclusivement des requêtes via les ordres SQL. Pour alléger le côté lourd du nom de requête à passer aux ordres SQL, j'ai encapsulé ça dans une classe cRequête qui génère et réutilise automatiquement un nom de requête. Ainsi pas d'erreur d'étourderie possible car j'ai la sécurité du nom de l'objet que je manipule.

    D'autres procédures peuvent être vite écrites lorsqu'on réutilise toujours les même lignes de code et effacer le côté "barbare" des ordres SQL.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    sSql est une chaîne = [
    SELECT     
    	T_Facture.ID_Facture, 
    	T_Facture.Avoir, 
    	T_Facture.Date_Facture, 
    	T_Facture.Num_Client, 
    	T_Facture.Nom_Client, 
    	T_Facture.BordereauOk,
    	SUM(T_LigneFacture.Prix_Unitaire_HT * T_LigneFacture.Quantite) as MontantHT, 
    	SUM( (1 + T_LigneFacture.Taux_TVA) * T_LigneFacture.Prix_Unitaire_HT * T_LigneFacture.Quantite) as MontantTTC, 
    	T_Facture.ExportComptaOK
    FROM T_Facture       
     
    	INNER JOIN T_LigneFacture 
    		ON T_Facture.ID_Facture = T_LigneFacture.ID_Facture
     
    	LEFT JOIN T_LotActivite 
    		ON T_LotActivite.ID_LotActivite = T_Facture.ID_LotActivite
     
    		LEFT JOIN T_Escale
    			 ON T_Escale.ID_Escale = T_LotActivite.ID_Escale 
     
    GROUP BY 	T_Facture.ID_Facture, T_Facture.Avoir, T_Facture.Date_Facture, T_Facture.Num_Client, T_Facture.Nom_Client, T_Facture.BordereauOk, T_LotActivite.ID_LotActivite, T_Escale.ID_Escale, T_Facture.ID_Client, T_Facture.ExportComptaOK 
    ORDER BY T_Facture.Date_Facture DESC
    ]
     
    oReqFacture est une cRequete
     
    oReqFacture:Executer(sSql)
    oReqFacture:Premier()
    TANTQUE PAS oReqFacture:EnDehors()
     
    	...
     
    	oReqFacture:Suivant()
    FIN
    De plus les SQLFerme() sont automatiquement effectués à la destruction de mes objets cRequete

Discussions similaires

  1. [WD10] Connexion avec l'accès natif MySQL
    Par dj-julio dans le forum WinDev
    Réponses: 5
    Dernier message: 20/02/2012, 12h38
  2. installation acces natif MySQL linux
    Par lVlatthieu dans le forum WinDev
    Réponses: 3
    Dernier message: 10/07/2007, 19h54
  3. [WD9] Acces natif Mysql
    Par nfrancky dans le forum HyperFileSQL
    Réponses: 1
    Dernier message: 09/06/2007, 01h00
  4. [WinDev 10] WinDev accès natif mysql
    Par joelviscarros dans le forum WinDev
    Réponses: 4
    Dernier message: 27/11/2006, 21h02
  5. Erreur accès natif Mysql
    Par joelviscarros dans le forum WinDev
    Réponses: 1
    Dernier message: 17/11/2006, 12h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo