Précédent   Forum des professionnels en informatique > Bases de données > Oracle
Oracle Forum Oracle : le serveur, les outils, ... Voir F.A.Q Oracle Tutoriels Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/03/2007, 15h40   #1
Membre émérite
 
Avatar de Drizzt [Drone38]
 
Homme
Inscription : mai 2004
Messages : 739
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : mai 2004
Messages : 739
Points : 979
Points : 979
Par défaut [Oracle8i]Performances CASE, DECODE

Bonjour à tous,

Une simple question, à votre avis quel est le plus performant entre les deux ? (j'ai vu un topic qui parle de la même chose mais la réponse est pas franche donc je préfére proposer directement mes deux solutions à l'étude).

Code :
1
2
3
4
5
CASE WHEN (T1.c IS NULL AND T2.c IS NULL) THEN T3.c
     WHEN T1.c IS NULL THEN T2.c
     WHEN T2.c IS NULL THEN T1.c
     ELSE decode ( Sign(T1.c - T2.c), 1 , T1.c ,T2.c )
END

Code :
1
2
3
4
5
6
7
decode ( T1.c,
         NULL ,                                              
	 decode ( T2.c, NULL, T3.c, T2.c) ,
         decode ( T2.c, NULL , T1.c, 
                  decode ( Sign(T1.c - T2.c), 1 , T1.c ,T2.c )
                ) 
       )
Je pense que la seconde est plus efficace dans la majorité des cas si on compte le nombre de tests effectués. Mais il y a peut etre d'autres paramètres qui entrent en compte d'ou ma question.

Merci d'avance.
__________________
Je ne réponds pas aux questions techniques par MP, le forum est là pour cela.

La crypto c'est comme les flambys, une fois que tu as trouvé la languette tu as juste à tirer pour tout faire tomber.

(\ _ /)
(='.'=)
Voici Lapinou. Aidez le à conquérir le monde
(")-(") en le reproduisant
Drizzt [Drone38] est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/03/2007, 15h50   #2
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
en principe il n'y a aucune différence entre les deux à part que le CASE est plus lisible
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/03/2007, 15h55   #3
Membre émérite
 
Avatar de Drizzt [Drone38]
 
Homme
Inscription : mai 2004
Messages : 739
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : mai 2004
Messages : 739
Points : 979
Points : 979
Ok merci, on va partir pour le case alors !
__________________
Je ne réponds pas aux questions techniques par MP, le forum est là pour cela.

La crypto c'est comme les flambys, une fois que tu as trouvé la languette tu as juste à tirer pour tout faire tomber.

(\ _ /)
(='.'=)
Voici Lapinou. Aidez le à conquérir le monde
(")-(") en le reproduisant
Drizzt [Drone38] est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/03/2007, 16h23   #4
McM
Expert Confirmé Sénior
 
Inscription : juillet 2003
Messages : 3 450
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 3 450
Points : 4 209
Points : 4 209
Tu peux remplacer
Code :
decode ( Sign(T1.c - T2.c), 1 , T1.c ,T2.c )
Par
__________________
More Code : More Bugs. Less Code : Less Bugs
McM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/03/2007, 16h26   #5
Membre émérite
 
Avatar de Drizzt [Drone38]
 
Homme
Inscription : mai 2004
Messages : 739
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : mai 2004
Messages : 739
Points : 979
Points : 979
Bien ça, je le connaissait pas celui-la !

Merci.
__________________
Je ne réponds pas aux questions techniques par MP, le forum est là pour cela.

La crypto c'est comme les flambys, une fois que tu as trouvé la languette tu as juste à tirer pour tout faire tomber.

(\ _ /)
(='.'=)
Voici Lapinou. Aidez le à conquérir le monde
(")-(") en le reproduisant
Drizzt [Drone38] est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/03/2007, 16h27   #6
McM
Expert Confirmé Sénior
 
Inscription : juillet 2003
Messages : 3 450
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 3 450
Points : 4 209
Points : 4 209
Attends, c'est pas fini:
Code :
1
2
3
4
SELECT NVL(GREATEST( NVL(T1.c, T2.c - 1), 
			 NVL(T2.c, T1.c - 1))
		, T3.c )
FROM dual
__________________
More Code : More Bugs. Less Code : Less Bugs
McM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/03/2007, 16h42   #7
Membre émérite
 
Avatar de Drizzt [Drone38]
 
Homme
Inscription : mai 2004
Messages : 739
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : mai 2004
Messages : 739
Points : 979
Points : 979
Looks good !

C'est Noel avant l'heure la ^^

Encore merci.
__________________
Je ne réponds pas aux questions techniques par MP, le forum est là pour cela.

La crypto c'est comme les flambys, une fois que tu as trouvé la languette tu as juste à tirer pour tout faire tomber.

(\ _ /)
(='.'=)
Voici Lapinou. Aidez le à conquérir le monde
(")-(") en le reproduisant
Drizzt [Drone38] est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h34.


 
 
 
 
Partenaires

Hébergement Web