Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1723 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [Oracle] Optimisation requete avec UNION

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Oracle] Optimisation requete avec UNION

n°2089850
shooker
Posté le 18-07-2011 à 09:26:44  profilanswer
 

Bonjour,
 
Je dois faire une requête avec une clause where sur 2 champs. Le problème est que je dois faire 3 combinaisons sur ces 2 champs. Voici la première requête que j'ai essaye :

Code :
  1. SELECT *
  2. FROM matable
  3. WHERE (champ1 = 'test1' AND champ2 = 3) OR (champ1 = 'test2' AND champ2 = 5) OR (champ1 = 'test3' AND champ2 = 1)


 
Cette requête n'a pas fonctionnée, je me suis donc tourne vers UNION, mais je ne suis pas satisfait de cette méthode :

Code :
  1. SELECT *
  2. FROM matable
  3. WHERE champ1 = 'test1' AND champ2 = 3
  4. UNION
  5. SELECT *
  6. FROM matable
  7. WHERE champ1 = 'test2' AND champ2 = 5
  8. UNION
  9. SELECT *
  10. FROM matable
  11. WHERE champ1 = 'test3' AND champ2 = 1


 
N'existerai pas une meilleure solution pour mettre en place cette formule ?

mood
Publicité
Posté le 18-07-2011 à 09:26:44  profilanswer
 

n°2090099
furie gast​rique
Posté le 19-07-2011 à 09:29:29  profilanswer
 

Les deux codes sont valides mais le premier est plus élégant il me semble. Quel est le problème?


---------------
Google isn't making us stupider, it's simply making us realise that omniscience is actually slightly boring. (Douglas Copland)
n°2090156
lasnoufle
La seule et unique!
Posté le 19-07-2011 à 13:25:25  profilanswer
 

J'suis d'accord avec furie gastrique, le premier code devrait marcher.

 

Sinon ca aussi ca devrait marcher:

SELECT *
FROM matable
WHERE (champ1,champ2) in (('test1',3),('test2',5),('test3',1));


Message édité par lasnoufle le 19-07-2011 à 13:26:24

---------------
C'était vraiment très intéressant.
n°2090206
fred777888​999
Posté le 19-07-2011 à 17:18:27  profilanswer
 

Curieux de savoir pourquoi la premiere requete n'as pas marche.  
L'optimisation de requetes en mettant des unions a la place de or est une technique completement depassee de nos jours et souvent la version avec les or est plus performante sur les moteurs de BDD actuels.
En primes, tu as fait l'effort de correctement parentheser ton code (un plus a mon avis) alors que sans parentheses, ca voudrait dire la meme chose (and plus prioritaire que or).


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [Oracle] Optimisation requete avec UNION

 

Sujets relatifs
Problème avec l'erreur Oracle ORA-19025Connexion base oracle via fonction PHP
[Résolu]Optimisation de la SFML[SQL] Resultat requete dans une variable
1 requete SQL avec deux Requete DistincteConseil aide requete sql
Excel et SQL requete avec deux condition?Oracle 11g R2 est fou ? Problème avec OR
problème (opérateur manquant) dans Requete SQL sous Excel VBARequête avec jointure et multiples conditions
Plus de sujets relatifs à : [Oracle] Optimisation requete avec UNION


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR