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 :

Optimiser une requete SQL et la DB


Sujet :

MS SQL Server

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 145
    Points : 59
    Points
    59
    Par défaut Optimiser une requete SQL et la DB
    Bonjour à tous,

    Voila je dois optimiser une requête SQL et éventuellement la base de donnée qui va avec sur un serveur SQL Server. En gros il s'agit d'une requête pour retrouver une hiérarchie dans un arbre et cette requête peut prendre plus de 15 secondes. Après de multiple recherche je bloque toujours.

    En gros la structure de la table :

    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
    CREATE TABLE [dbo].[DEALER] (
    	[D_DEALER] [decimal](6, 0) NOT NULL ,
    	[D_LEVEL2] [varchar] (7)  NULL ,
    	[D_LEVEL3] [varchar] (7)  NULL ,
    	[D_LEVEL4] [varchar] (7)  NULL ,
    	[D_LEVEL5] [varchar] (7)  NULL ,
    	[D_LEVEL6] [varchar] (7)  NULL ,
    	[D_LEVEL7] [varchar] (7)  NULL ,
    	[D_LEVEL8] [varchar] (7)  NULL ,
    	[D_BIRTHDAY] [varchar] (20)  NULL 
    ) ON [PRIMARY]
     
    CREATE TABLE [dbo].[LEVELS_NAMES] (
    	[LV_ID] [varchar] (7)  NULL ,
    	[LV_PER] [varchar] (50)  NULL ,
    	[LV_NAME] [varchar] (36) NULL 
    ) ON [PRIMARY]
    Le varchar(7) est malheureusement imposé.

    Voici la requête

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT D_LEVEL8,LV8.LV_NAME,D_LEVEL7,LV7.LV_NAME ,D_LEVEL6,LV6.LV_NAME ,D_LEVEL5,LV5.LV_NAME A,D_LEVEL3,LV3.LV_NAME 
    FROM DEALER 
    LEFT JOIN LEVELS_NAMES AS LV8 ON D_LEVEL8=LV8.LV_ID 
    LEFT JOIN LEVELS_NAMES AS LV7 ON D_LEVEL7=LV7.LV_ID 
    LEFT JOIN LEVELS_NAMES AS LV6 ON D_LEVEL6=LV6.LV_ID 
    LEFT JOIN LEVELS_NAMES AS LV5 ON D_LEVEL5=LV5.LV_ID 
    LEFT JOIN LEVELS_NAMES AS LV3 ON D_LEVEL3=LV3.LV_ID 
    WHERE D_LEVEL8='80' AND D_BIRTHDAY!='' 
    GROUP BY D_LEVEL8,LV8.LV_NAME,D_LEVEL7,LV7.LV_NAME,D_LEVEL6,LV6.LV_NAME,D_LEVEL5,LV5.LV_NAME,D_LEVEL3,LV3.LV_NAME ORDER BY D_LEVEL8,D_LEVEL7,D_LEVEL6,D_LEVEL5,D_LEVEL3
    Voyez vous un moyen d'améliorer cette requete ?

    Merci à tous

  2. #2
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    Bonsoir,

    La structure de vos tables est imposée ou vous pouvez la changer ?
    Sinon auriez vous un petit jeu de données?

    ++

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 8
    Points : 8
    Points
    8
    Par défaut
    Si la structure est imposée, c'est pas très optimisé... mais soit.

    Concernant les "lenteurs" sur la requête, as-tu vérifié que tes tables étaient indéxés.

    Si ce n'est pas le cas, en voyant la structure, il serait judicieux d'ajouter des index sur les colonnes suivantes :
    • LV_ID
    • D_LEVELx


    ce qui permetrait d'améliorer les temps de jointures (5 dans ta requete).

Discussions similaires

  1. Optimisation du LIKE dans une Requete SQL
    Par maxwel56 dans le forum Requêtes
    Réponses: 3
    Dernier message: 11/02/2012, 22h36
  2. Comment optimiser une requete Update SQL ?
    Par Battosaiii dans le forum SQL
    Réponses: 3
    Dernier message: 20/07/2011, 13h51
  3. optimisation d'une requete sql
    Par friedamichelle dans le forum Développement
    Réponses: 1
    Dernier message: 03/06/2008, 14h24
  4. Optimiser une Requetes SQL sous ASP
    Par NeHuS dans le forum ASP
    Réponses: 8
    Dernier message: 18/04/2005, 16h26
  5. Une requete SQL unpeux difficile !!
    Par nil dans le forum Bases de données
    Réponses: 5
    Dernier message: 09/03/2004, 12h32

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