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

MS SQL Server Discussion :

[Performances]Requête de sommation


Sujet :

MS SQL Server

  1. #1
    Membre éclairé
    Avatar de m-mas
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2003
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2003
    Messages : 576
    Points : 719
    Points
    719
    Par défaut [Performances]Requête de sommation
    Bonjour,

    j'essai d'écrire une requête le plus éfficacement possible, j'essai de voir ça avec le générateur de profils SQL mais ses temps de traitements m'ont semblé aléatoires !!

    ma table T1 contient 5 champs :
    - ch1 : contient un text, exemple "testDeRequete"
    - ch2 : premier caractère de ch1 : "t"
    - ch3 : les 2 premiers caractères de ch1 : "te"
    - ch4 : les 3 premier caractères de ch1 : "tes"
    - ch5 : montant de type Money

    mes requêtes peuvent alors être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT     SUM(ch5) AS Expr1
    FROM       T1        WHERE     (ch1 LIKE 't%')
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT     SUM(ch5) AS Expr1
    FROM       T1        WHERE     (ch2 = 't')
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT     SUM(ch5) AS Expr1
    FROM       T1        WHERE     (substring(ch1,2) = 'te')
    A premier vu et selon le générateur de profil, la meilleure solution ou la meilleure façon de faire la requête est la deuxième !!

    sachant que j'ai une moyenne de 100 000 ligne dans la table !

    Merci de votre aide !

  2. #2
    Membre éprouvé
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Points : 959
    Points
    959
    Par défaut
    Je crois que c'est la 2e solutions la meilleure, car dans les 2 autres tu compliques un peu la requete, en faisant un substring, t'as une autre instruction a faire en plus de faire la sum il faut qu'il vérifie tous les champs et appliquer le substring
    Dans la premiere requete, tu recherches les expression qui "ressemble a t" au lieu de chercher que les t directement. C'est une instruction de plus qui se trouve dans ton where, encore du travail de plus à faire...

    Tu dois y aller plus direct comme ta requete 2, sutout s'il y a 100 000 ligne dans ta table!

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 72
    Points : 62
    Points
    62
    Par défaut
    La 2eme est pour moi aussi la meilleure,
    Mais je ne comprends pas pkoi tu as les champs ch2, ch3 et ch4 car se sont des champs "calculés"

    Moi j'aurais fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT     SUM(ch5) AS Expr1 
    FROM       T1        WHERE     left(ch1,1) = 't'
    Et j'aurais supprimé les champs ch2, ch3, ch4.

  4. #4
    Membre éclairé
    Avatar de m-mas
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2003
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2003
    Messages : 576
    Points : 719
    Points
    719
    Par défaut
    oui, en fait c'est aussi pour savoir comment modéliser la table, le ch1 est obligatoire, ensuite si je pense qu'il faut calculé un champ pour accélérer les requête, je le ferais ...

    autre chose qui me surprend un petit peu, j'ai mis 1 million de lignes dans ma table et c'est la première requête qui semble la plus rapide (700 millisecondes contre 1 seconde 2 pour la deuxième requête)

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 72
    Points : 62
    Points
    62
    Par défaut
    Oui je comprends tout à fait ta position, il m'arrive de le faire également afin d' "optimiser" certains traitements.

    As tu testé ma solution ???

    pour tes temps de réponses n'aurait tu pas un index sur ch1 ???

Discussions similaires

  1. [SSRS][2k8] Performances requête SSRS
    Par matb33 dans le forum SSRS
    Réponses: 11
    Dernier message: 11/08/2008, 16h36
  2. Performance requète avec jointure
    Par roudy78 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 20/06/2007, 12h58
  3. Performance requête vb
    Par mariemor64 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 07/06/2007, 12h24
  4. [MySQL] Amélioration performance requête
    Par lodan dans le forum PHP & Base de données
    Réponses: 15
    Dernier message: 15/01/2007, 09h06
  5. [Access] Optimisation performance requête - Index
    Par fdraven dans le forum Access
    Réponses: 11
    Dernier message: 12/08/2005, 14h30

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