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 :

Optimisation LEFT avec CASE WHEN


Sujet :

MS SQL Server

  1. #1
    Invité
    Invité(e)
    Par défaut Optimisation LEFT avec CASE WHEN
    Bonjour,

    J'ai une jointure qui prend un max de temps à s'executer à cause des CASE imbriqués.

    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
     
     
     
    LEFT JOIN BATCHES BA ON CASE BA.TYPE
    	WHEN 'RAW' 
    		THEN CASE WHEN h.po_hdr_key = BA.XCOMMANDNO THEN ELSE 0 
    			 END 
     
    	WHEN 'FP' 
    		THEN CASE WHEN d.in_item_key = 'SF900016' OR d.in_item_key LIKE 'BCF%' THEN  
    			CASE WHEN h.ln_cdehdr_nocommande = BA.XCOMMANDNO THEN 1
    				ELSE 
    					CASE WHEN h.ln_cdehdr_nocommande = BA.XCOMMANDNO AND d.en_lot_key = BA.BATCHNO AND d.in_item_key = BA.XCODEADAGE THEN 1 ELSE 0 END
    				END	 
    			ELSE 0
    			END
    	END = 1
    Comment optimiser ceci?

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2008
    Messages
    698
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Octobre 2008
    Messages : 698
    Points : 586
    Points
    586
    Par défaut
    Le moyen le plus efficace c'est de changer le modèle de données pour éviter le case...

  3. #3
    Membre éprouvé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2009
    Messages
    623
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Août 2009
    Messages : 623
    Points : 1 049
    Points
    1 049
    Par défaut
    C'est sur que ça ressemble beaucoup à un problème de conception du modèle.
    Si tu ne peux pas changer le modèle, essayes de faire X requêtes avec un union plutôt qu'un case dans la jointure. Je ne garantie rien mais ca peut améliorer un peu... Mais c'est moche
    Blog Perso | Kankuru (logiciel gratuit pour SQL Server)

  4. #4
    Invité
    Invité(e)
    Par défaut
    je me suis débrouillé autrement. Merci !!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. DISTINCT d'un champ combiné avec CASE WHEN
    Par ninikkhuet dans le forum Requêtes
    Réponses: 1
    Dernier message: 11/05/2010, 15h13
  2. [SQL SERVER 2005] INSERT avec CASE WHEN
    Par djilos dans le forum Développement
    Réponses: 5
    Dernier message: 16/04/2010, 14h46
  3. Requête avec Case When ..
    Par Passarinho44 dans le forum Langage SQL
    Réponses: 20
    Dernier message: 08/08/2008, 16h03
  4. Réponses: 5
    Dernier message: 26/02/2008, 12h42
  5. Pb avec case when !
    Par Brice Yao dans le forum Langage SQL
    Réponses: 11
    Dernier message: 05/08/2005, 08h20

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