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

Développement SQL Server Discussion :

Optimisation code SQL


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Mai 2007
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 335
    Par défaut Optimisation code SQL
    Bonjour tlm,
    je voudrais voir s'il y a la possibilité d’optimiser ce code
    je saisi qu'il est un peut tiré par les cheveux mais il fonctionne ...

    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    Select
    final.ID_Invoice,
    final.ID_Customer,
    final.VIN,
    final.Amount,
    final.Description,
    final.ID_Date,
    final.Sommme,
    final.ID_Agent,
    (Sommme* quantity) as Amount_By_VIN
     
    from
     
    (SELECT sub.[Document No_] as ID_Invoice,
      sub.[Customer No_] as ID_Customer,
      sub.VIN,
      sub.Amount,
      sub.Description,
      sub.[Posting Date] as ID_Date,
      bit.Sommme,
      sub.[Salesperson Code] as ID_Agent,
     
      CASE 
        WHEN sub.[Document No_] = (SELECT min(b.[Document No_]) FROM dbo.[$Sales Invoice Line] b LEFT JOIN
          (SELECT  bb.[Applies-to Doc_ No_]
          FROM IN_test.dbo.[$Sales Credit Memo Line] aa, dbo.[$Sales Credit Memo Header] bb 
          WHERE aa.[Document No_]=bb.No_ AND 
          aa.[Document No_] like '%vh%'AND 
          aa.[Sell-to Customer No_] <> ''AND
          bb.[Posting Description] like '%avoir%'AND
          aa.Description NOT LIKE '%tva%') d
          ON b.[Document No_]=d.[Applies-to Doc_ No_]
          WHERE
          sub.VIN=b.vin
          AND d.[Applies-to Doc_ No_] IS NULL)   
        THEN '1'
        ELSE '0'
      END AS Quantity
     
     
    FROM
    ------------------------------
    (SELECT
      k.VIN,
      sum(k.Amount) as Sommme
      FROM
        dbo.[$Sales Invoice Line] k 
        LEFT JOIN
         (SELECT  h.[Applies-to Doc_ No_]
          FROM IN_test.dbo.[$Sales Credit Memo Line] g, dbo.[$Sales Credit Memo Header] h 
          WHERE g.[Document No_]=h.No_ AND 
          g.[Document No_] like '%vh%'AND 
          g.[Sell-to Customer No_] <> ''AND
          h.[Posting Description] like '%avoir%'AND
          g.Description NOT LIKE '%tva%') dd
        ON k.[Document No_]=dd.[Applies-to Doc_ No_]
     WHERE
     
      dd.[Applies-to Doc_ No_] IS NULL
      AND k.Description NOT LIKE '%TVA%'
      AND k.[Document No_] like '%vh%' 
    group by k.VIN) bit,
    ---------------------------------
     
     
      (SELECT
      a.[Document No_],
      b.[Customer No_],
      a.VIN,
      a.Amount,
      a.Description,
      c.[Posting Date],
      c.[Salesperson Code]
     
     
      FROM
        dbo.[$Sales Invoice Header] c,
        dbo.$Vehicle b,
        dbo.[$Sales Invoice Line] a 
        LEFT JOIN
         (SELECT  m.[Applies-to Doc_ No_]
          FROM IN_test.dbo.[$Sales Credit Memo Line] k, dbo.[$Sales Credit Memo Header] m 
          WHERE k.[Document No_]=m.No_ AND 
          k.[Document No_] like '%vh%'AND 
          k.[Sell-to Customer No_] <> ''AND
          m.[Posting Description] like '%avoir%'AND
          k.Description NOT LIKE '%tva%') dd
        ON a.[Document No_]=dd.[Applies-to Doc_ No_]
     
     
     WHERE
     
     a.VIN  = b.VIN 
     
      AND a.[Document No_]= c.No_
      AND dd.[Applies-to Doc_ No_] IS NULL
      AND a.Description NOT LIKE '%TVA%') SUB 
     
     
    WHERE sub.vin= bit.vin
     
    GROUP BY
      sub.[Document No_],
      sub.[Customer No_],
      sub.VIN,
      sub.Amount,
      sub.Description,
      sub.[Posting Date],
      sub.[Salesperson Code],
      bit.Sommme) final
    Merci pour votre aide

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 999
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 999
    Billets dans le blog
    6
    Par défaut
    Commencez par respecter la charte de postage en nous inqiqaunt notamment :
    1) le SGBDR utilisé
    2) la DDL de vos tables et index
    3) un jeu d'essais sous former INSERT INTO
    4) le résultat attendu

    A lire : http://www.developpez.net/forums/a69...gage-sql-lire/

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Membre éclairé
    Inscrit en
    Mai 2007
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 335
    Par défaut
    Merci SQLpro et je m'excuse pour cette oubli
    j'utilise SQL server 2008 et dans le fichier joint il y a les scripts de création des tables.
    pour les deux derniers points je ne vois pas comment faire ??
    3) un jeu d'essais sous former INSERT INTO
    4) le résultat attendu
    je reste a votre disposition pour plus de détails
    merci pour votre aide
    Fichiers attachés Fichiers attachés

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 999
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 999
    Billets dans le blog
    6
    Par défaut
    C'est pas des tables ça ????
    C'est ds fichiers COBOL !

    Commencez par réaliser un vrai modèle relationnel et vous comprendrez alors que l'optimisation y est naturelle !

    A lire :
    http://blog.developpez.com/sqlpro/p1...ances-petites/
    http://blog.developpez.com/sqlpro/p1...e-donnees-rel/

    Il n'y a pas d'autre solution pour faire des requête performante que de faire un vraie BD relationnelle et non un bouliboulga à base de fichiers...

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  5. #5
    Membre Expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Par défaut
    C'est pas des tables ça ????
    Non il n'y a qu'une table c'est tout

    Savez vous que vous pouvez faire plusieurs tables dans une base de données?

    Si vous êtes vraiment dingue vous pouvez même les lier entre elles!

    Sérieusement ras le bol de voir çà, je sors d'un audit d'un client ayant installé PTC (logiciel de stockage de données CAO entre autre).

    45mn pour afficher un gridview des articles!
    Et tempDB prends 34 gigas pendant ce temps!!!

    Au menu : snapshot isolation, curseurs, table temporaire... que du bonheur?
    On leur dit quoi? Désolé monsieur vous avea acheté de la merde?

  6. #6
    Membre émérite Avatar de Arkhena
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 552
    Par défaut
    J'ai le même souci avec un éditeur qui veut pas reconnaître qu'il n'a rien foutu niveau BDD et que c'est pas en rajoutant 16Go et 2 quad coeur sur ma machine que je vais résoudre le problème...

Discussions similaires

  1. Optimisation du code SQL
    Par JeanNoel53 dans le forum InterBase
    Réponses: 1
    Dernier message: 02/07/2010, 11h31
  2. [MySQL] Optimisation code requète sql multi conditionnée
    Par mac7474 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 13/08/2009, 09h51
  3. Optimisation code Sql
    Par SuperWaza dans le forum DB2
    Réponses: 5
    Dernier message: 28/07/2009, 15h31
  4. optimiser code sql access par boucle sur tous les chkbox
    Par thiefer dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 25/09/2008, 21h46
  5. Optimisation d'un code SQL
    Par Myriam25 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 29/11/2007, 11h14

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