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 :

[Grosse requete] Lenteur innexpliquée


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Développeur .Net, Administrateur système
    Inscrit en
    Octobre 2003
    Messages
    219
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .Net, Administrateur système
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2003
    Messages : 219
    Par défaut [Grosse requete] Lenteur innexpliquée
    [SQL serveur 2000]


    J'ai une grosse requete qui est basée sur une vingtaines de table et de vue qui fonctionne bien lorsque je selectionne que le code client.

    (Ca m'embete un peu de poster tout le code ici car il est long et il y a beaucoup de tables associées)

    Bref la requete prend 20 secondes a renvoyer les lignes qu'on lui demande si on selectionne que le code client. Si j'ajoute une autre colonne je passe a 1 demi heure. (et j'ai 31 colonnes à selectionner)

    J'ai utilisé des inner join et left outer join plutot que les where. Bref si vous avez une idée !

    Un GRAND MERCI pour votre aide


  2. #2
    LXS
    LXS est déconnecté
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 106
    Par défaut
    Que te dit le plan d'exécution? Est-il modifié par l'ajout de cette fameuse colonne?

  3. #3
    Membre éclairé
    Profil pro
    Développeur .Net, Administrateur système
    Inscrit en
    Octobre 2003
    Messages
    219
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .Net, Administrateur système
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2003
    Messages : 219
    Par défaut
    Le plan d'execution est effectivement affecté par cela.. mais ca ne m'explique pas tout.

    En effet, si je selectionne une colonne de la table 2 (on va dire), ca passe bien et si prend une deuxieme colonne de cette table 2 ca ne passe pas.

    (le plan d'execution est différent)

    Sachant que les enregistrements de ces deux colonnes de cette table 2 ne sont pas uniques (il s'agit d'une date et de l'agent associé a cette date)

  4. #4
    Membre Expert
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Par défaut
    Bonjour,

    Je te suggère de jeter un oeil sur mon article :
    http://rudi.developpez.com/sqlserver.../optimisation/
    Qui peut te donner des pistes pour améliorer cela, notamment avec un index.

  5. #5
    Membre éclairé
    Profil pro
    Développeur .Net, Administrateur système
    Inscrit en
    Octobre 2003
    Messages
    219
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .Net, Administrateur système
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2003
    Messages : 219
    Par défaut
    J'ai lu votre article et ca m'a aidé a mieux comprendre certaine chose mais il demeure plusieurs question.

    Comment forcer SQL serveur a emprunter un plan d'execution ?
    Comment découper le plan d'execution pour l'imprimer sur plusieurs A3 (Il es masta Grand)

    Bref normalement je devrai poser des index sur plusieurs colonnes pour les tables qui m'interressent.. Mais c'est tout de meme bizarre qu'a demander des colonnes supplementaires, on augmente considerablement le temps de reponse !!

    Encore Merci pour votre aide

  6. #6
    Membre Expert
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Par défaut
    Il faut éviter de forcer un plan d'exécution. SQL Server a un très bon optimiseur et ses choix sont en général les meilleurs.

    Je n'ai jamais vraiment imprimer un plan d'exécution, je le parcours sur l'écran.

    Si tu ajoutes un critère sur une colonne, et que cette colonne n'est pas indexée, probablement SQL Server est obligé de scanner la table pour filter selon ton critère.
    Poste tout de même ton code, qu'on se fasse une idée.

Discussions similaires

  1. [MySQL] grosse requete qui ferait tout planter ?
    Par mdr_cedrick dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 29/01/2008, 17h25
  2. Message d'erreur lors d'une grosse requete
    Par tony8716 dans le forum Développement
    Réponses: 9
    Dernier message: 03/01/2008, 10h34
  3. Message d'erreur lors d'une grosse requete
    Par tony8716 dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 03/01/2008, 10h34
  4. Plusieurs Sous-Requete lenteur exécution
    Par Pago dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 11/09/2007, 13h58
  5. Grosse Requete ou Requete sur une vue ?
    Par TangoZoulou dans le forum Langage SQL
    Réponses: 15
    Dernier message: 20/07/2007, 09h52

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