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 :

HFiltre vs Requête parametrée [Généralités]


Sujet :

WinDev

  1. #1
    Membre averti Avatar de droliprane
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2005
    Messages : 710
    Points : 444
    Points
    444
    Par défaut HFiltre vs Requête parametrée
    Bonjour,

    je reviens auprès de vous pour avoir votre avis éclairé sur la pertinence de l'utilisation des fonctions HFiltre comparée à l'utilisation de requête paramétrée.

    Je donne un cas d'utilisation : J'ai une liste de commandes, et quand je clique sur une commande je veux afficher toutes les livraisons effectuées sur la dite commande. En production, on peut imaginer que j'aurai une vingtaine de commandes (de 5 lignes en moyenne) rentrées par mois, et environ 10 BL par jour.

    Je vois 2 possibilités, il y en peut-être d'autres :

    1) je fais un requête hyper générique : SELECT * FROM bl;
    que je filtre à chaque fois par un HFiltre sur le critere bl_commande = ma_commande_selectionnée

    2) je fais une requête paramétrée, que je réexécute à chaque changement de commande, mais avec le paramètre ma_commande_sélectionnée


    J'aimerais savoir dans chacun des cas, ce qui est avantageux et ce qui l'est moins, enfin ce qui est plus ou moins couteux en resource, en temps d'exécution, .... histoire de ne pas voir mon programme grignotter au fur et à mesure le peu de ram que peuvent avoir certaines machines, ou solliciter le processeur plus que de raison...

    Merci à vous.
    'Diviser chacune des difficultés en autant de parcelles qu’il se pourrait et qu’il serait requis pour les mieux résoudre', René Descartes

    => Maya GPAO

  2. #2
    Membre émérite
    Homme Profil pro
    Développeur et responsable micros/réseaux
    Inscrit en
    Octobre 2010
    Messages
    1 286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur et responsable micros/réseaux
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 286
    Points : 2 562
    Points
    2 562
    Par défaut
    Bonjour,

    déjà il faudrait savoir sur quelle base de données sont stockées les infos et si tu as l'habitude des requêtes SQL ou pas. Si tu es à l'aise avec les requêtes et que tu n'as pas du HF classique ou C/S, dans ce cas ne t'embêtes pas et lances des requêtes que tu parcoures ensuite.
    Si tu es avec des fichiers HF, alors tu peux utiliser les fonctions H qui interagissent bien avec les données stockées sous ce format.

    Pour les perfs, cela dépend beaucoup du serveur sur lequel elles sont stockées et des perfs réseau pour les atteindre.

    à bientôt,

    Nicolas

  3. #3
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 202
    Points : 9 190
    Points
    9 190
    Par défaut
    Personnellement, pour les commandes/livraisons, je fais une requête paramétrée.
    La requête est utltra-basique (car sur une table) et du coup, les performances sont là.

    A voir après sur une table de 1 million d'enregistrements, mais avec des hfiltre ou hlitrecherchepremier, on doit avoir des temps de réponse similaires.
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  4. #4
    Membre averti Avatar de droliprane
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2005
    Messages : 710
    Points : 444
    Points
    444
    Par défaut
    Nicolas : alors je bosse sur SQL Server et ça fait plus de 10 ans que je fais du SQL mais pas du transact SQL, mais bon je pense manipuler assez bien les requêtes.

    Frenchsting : oui si ma requête me ramène 1 million de lignes de BL je me demande laquelle des méthodes se comporte le mieux....

    Enfin d'une manière générale, quand un fait une requete sql sans paramètre est-ce qu'on est certain qu'elle ne va être exécutée qu'une seule fois (vis à vis du moteur de base de données) et qu'en suite c'est le HFiltre qui HDésactiveFiltre qui est géré en interne par les bibliotheques windev ? Ou bien il y a quand même requetage de la base en arrière plan ?
    'Diviser chacune des difficultés en autant de parcelles qu’il se pourrait et qu’il serait requis pour les mieux résoudre', René Descartes

    => Maya GPAO

  5. #5
    Membre éprouvé Avatar de WDKyle
    Homme Profil pro
    Analyste-Programmeur
    Inscrit en
    Septembre 2008
    Messages
    1 200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-Programmeur

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 200
    Points : 962
    Points
    962
    Par défaut
    Salut,

    Si ton but est de gagner du temps et performances, récupère seulement les données nécessaire à chaque étape.

    Si dans un premier temps tu veux juste lister la liste de tous les bon de commandes (c'est çà ?) et bien fait une requête qui récupère juste quelques infos comme l'ID, le nom, ref par exemple.

    Et seulement après (lorsque l'utilisateur souhaite voir toutes les infos d'un bon de commande) tu fais une requête paramétrée sur un bon de commande precis.

    Moi je procède comme ça avec tous mes logiciels

  6. #6
    Membre averti Avatar de droliprane
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2005
    Messages : 710
    Points : 444
    Points
    444
    Par défaut
    Bon c'est vrai que dans un premier temps, et simplement parce que je veux m'assurer que le code fonctionne, j'ai tendance à faire des requêtes larges en SELECT * alors que j'ai peut-être besoin de seulement 3 champs sur 10 !

    Mais je me garde cette marge d'amélioration pour ensuite faire le tour de mes requêtes et les optimiser....

    C'est sur qu'il faut garder ça dans un coin de sa tête.
    'Diviser chacune des difficultés en autant de parcelles qu’il se pourrait et qu’il serait requis pour les mieux résoudre', René Descartes

    => Maya GPAO

  7. #7
    Membre émérite
    Homme Profil pro
    Développeur et responsable micros/réseaux
    Inscrit en
    Octobre 2010
    Messages
    1 286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur et responsable micros/réseaux
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 286
    Points : 2 562
    Points
    2 562
    Par défaut
    de toute façon, ton serveur SQL va stocker ta requête et son résultat pendant pas mal de temps donc si tu réexécutes la requête, les fois suivantes seront plus rapides. C'est le propre du serveur SQL. Maintenant si tu peux ne prendre que les lignes qui sont bonnes et ne pas avoir de filtre ensuite, c'est mieux.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 10/08/2007, 11h27
  2. classe ado requête parametrée
    Par jadey dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 08/05/2007, 23h32
  3. Requête parametrée stockée
    Par jadey dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 29/08/2006, 21h01
  4. [C#]probleme requête parametré
    Par fontome_ 123 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 29/07/2006, 16h30
  5. Comment créer des requêtes parametres
    Par bolbol dans le forum Access
    Réponses: 1
    Dernier message: 08/11/2005, 11h17

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