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 :

[MSDE] Temps de résolution de SP incohérent


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    dev
    Inscrit en
    Juin 2003
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Juin 2003
    Messages : 57
    Par défaut [MSDE] Temps de résolution de SP incohérent
    Bonsoir a tous !

    Je vais essayer de vous exposer mon problème le plus clairement possible :

    Certaines de mes procédures stockées ont un temps de résolution incohérent au possible ...

    J'ai une requete avec la clause Where suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    AnneeRef.Designation = @Annee AND
    	Structures.NumRegion = @NumReg AND 
    	Structures.NumDep = @NumDep AND
    	Structures.NumStruct = @NumClub AND
    	Individus.ID >= @IDMin AND Individus.ID <= @IDMax  )
    cette requete me renvoit 1545 lignes (quand elle ne pars pas en timeout) et a un temps de résolution d'environ 35 secondes (ce qui est énorme)...

    J'ai ensuite remarqué que des requetes tres similaires a celle-ci avaient un temps de résolution normal, la seule différence étant un test supplémentaire dans la clause WHERE .

    J'ai donc ajouté dans le WHERE de ma requete incriminée un test qui renvoit toujours TRUE :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    AnneeRef.Designation = @Annee AND
    	Structures.NumRegion = @NumReg AND 
    	Structures.NumDep = @NumDep AND
    	Structures.NumStruct = @NumClub AND
    	Individus.ID >= @IDMin AND Individus.ID <= @IDMax  ) AND  HistoIndiv.IDTypeIndiv <> 9)
    et c'est la que cela devient abbérrant : Ma requete renvoit le meme nombre de lignes (1545) , ce qui est normal puisque ma nouvelle clause renvoit toujours TRUE, mais celle-ci est résolue en moins d'une seconde !

    Logiquement rajouter un test a ma SP devrait plutot la ralentir étant donné que ce test n'élimine aucune ligne ? mais dans ce cas elle est résolue plus de 30 fois plus vite !!!

    Si quelqu'un a déja rencontré ce genre de problème ou a une petite idée sur le sujet il est le bienvenu .....


    Merci d'avance

  2. #2
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Par défaut
    Réaction qui ne devrait pas surprendre tous ceux qui savent que le moteur relationnel se base sur la définition des plans d'éxecutions tout en essayant de trouver le plan le plus rapide.
    Ajouter un filtre qui est toujours vrai, simplifie la vie à l'optimiseur de MS SQL Serveur qui désactive tous les filtres.
    Ajouter la lumière à la lumière supprime la lumière en créyant l'obscurité
    En fait, en ajoutant se filtre, ta requête ressemble maintenant à celle-ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Select *
    from MaTable

    Découvrez la FAQ de MS SQL Server.
    La chance accorde ses faveurs aux esprits avertis !

  3. #3
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 228
    Billets dans le blog
    25
    Par défaut
    Wolo Laurent n'a pas dû bien comprendre votre soucis.

    Une condition toujours vraie se sera pas prise en compte par l'optimiseur. D'où votre interrogation juste.

    Le seul moyen clair et précis d'obtenir une réponse à votre question et de comparer les plans d'exécution des 2 appels.

    Ceci, bien entendu, après les avoir testées après un updates statistics + sp_recompile sur les tables impactées.
    Sr DBA Oracle / MS-SQL / MySQL / Postgresql / SAP-Sybase / Informix / DB2

    N'oublie pas de consulter mes articles, mon blog, les cours et les FAQ SGBD

    Attention : pas de réponse technique par MP : pensez aux autres, passez par les forums !

Discussions similaires

  1. incohérence entre complexité et temps d'exec
    Par Iradrille dans le forum Langage
    Réponses: 9
    Dernier message: 16/10/2012, 06h12
  2. Plan de Maintenance : Temps d'exécution incohérent
    Par LOGGT dans le forum Administration
    Réponses: 9
    Dernier message: 23/03/2010, 18h20
  3. Réponses: 5
    Dernier message: 29/10/2009, 12h25
  4. Réponses: 0
    Dernier message: 28/10/2009, 15h10
  5. repertoire temp dynamique
    Par killpilot dans le forum C
    Réponses: 2
    Dernier message: 26/04/2002, 16h19

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