Je me suis toujours demandé quelle fonction était la plus rapide entre HExecuteRequeteSql et SqlExec j'ai donc tester les deux méthodes : connexion effectuée avec la fonction HouvreConnexion, requête exécutée avec la fonction HExecuteRequeteSql, nom de la requête dans variable de source de données connexion effectuée avec la fonction SQLConnecte, requête exécutée avec la fonction SqlExec, parcours effectué avec la fonction SqlAvance. Et bien les résultats sont sans appel, quelque soit le nombre d'enregistrement, ou la méthode (locale et réseau) Résultats (moyenne sur 10 exécutions) : HExecuteRequeteSql : 14,01 secondes SqlExec : 4,23 secondes Donc, la fonction SqlExec est beaucoup plus rapide, mais, son utilisation est BEAUCOUP moins claire que la fonction HExecuteRequeteSql sur laquelle on peut travailler avec le nom des variables Code (Text): i est un entier = 0 SQLExec("SELECT NOM, PRENOM, POSTE, PHOTO FROM CLIENT", "REQ1") TANTQUE SQLAvance("REQ1") = 0 i++ // Récupérer les données NOM[i] = SQLLitCol("REQ1", 1) PRENOM[i] = SQLLitCol("REQ1", 2) POSTE[i] = SQLLitCol("REQ1", 3) {"IMAGE"+i} = SQLLitMémo("REQ1", 4) FIN SQLFerme("REQ1") le même mais avec la fonction HExécuteRequêteSQL Code (Text): i est un entier = 0 ReqTache est une Source de Données HExécuteRequêteSQL(ReqTache, SELECT NOM, PRENOM, POSTE, PHOTO FROM CLIENT" Hlitpremier(ReqTache) TANTQUE pas hendehors(ReqTache) i++ // Récupérer les données NOM[i] = ReqTache.nom PRENOM[i] = ReqTache.prenom POSTE[i] = ReqTache.poste {"IMAGE"+i} = ReqTache.photo Hlitsuivant(ReqTache) FIN HAnnuleDéclaration(ReqTache) Conclusion Donc pour conclure, le dilemme reste présent, entre temps de réponse et clarté du code... Pour ma part, je n'utilise SqlExec que sur les requêtes très lentes ou nécessitant un temps de réponse rapide.
ThankS Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens! [Note] penser à acheter des croquettes SqlExec pour Rantanplan
Très bonne expérience... Merci Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!
J'ai effectué ce test avec une base HFSQL/CS voici le code de connection Code (Text): SQLConnecte("127.0.0.1:4900" , "ADMIN" , "PASS","BASE_CAC","HFSQLCS" ) Résultats (moyenne sur 10 exécutions) : Même chose avec les deux méthodes. Pas de différence. Il se peut que SqlExec fonctionne parfaitement avec une base de donnée tierce.
SQlexec est au départ fait pour l'ODBC et accès Natif. Hexecuterequetesql pour les OLEDB, en fait c'est le milieu entre SQLexec et Hexecuterequete. En HF, C'est inutile d'aller utiliser Hexecuterequesql qui n'apportera presque rien.
Merci pour le test. Effectivement, chaque code a ses caractéristiques : Voici l'explication de windev : Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!
Merci pour cette analyse. Mois aussi je confirme ces résultats : Durant mon expérience, on a travaillé au début avec des bases de données HF, ensuite on a migré vers MySQL avec un accès natif, et pour le moment on travaille pour convertir le code sous forme des fonctions SQL au lieu des fonctions Hxx. La conclusion c'est que les fonctions Hxx sont plus rapide bien sûr avec HF qu'avec un autre accès natif, mais on utilisant des requêtes (INSERT au lieu de HAjoute, UPDATE au lieu de HModifie, ...) MySQL est plus rapide. En plus on remarque la rapidité des fonctions SQL par rapport aux fonctions Hxx une fois on fait le test sur des requêtes avec un nombre intéressant d'enregistrements.
Voici une autre analyse dans le même sens : Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!