|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Nouveau Membre du Club
![]() Inscription : août 2006 Messages : 137 ![]() |
select count(*) as alias1
From Dual D WHere exists ( select a.col1, b.col2 From taba a left outer join tabb b on a.col4=b.col5 where a.col6=2 a.col7=2 a.col8=9 and b.col7=8) ) cette requete (oracle 9ir2) retourne 1 si le contenu de la sous requete ramene 1 ou plusieurs lignes . retourne 0 sinon Voici son plan d''execution Execution Plan ---------------------------------------------------------- 0 SELECT STATEMENT Optimizer=CHOOSE (Cost=1982 Card=1) 1 0 SORT (AGGREGATE) 2 1 FILTER 3 2 TABLE ACCESS (FULL) OF 'DUAL' (Cost=1982 Card=1) 4 2 TABLE ACCESS (BY INDEX ROWID) OF 'Tabb' (Co st=2 Card=1 Bytes=56) 5 4 NESTED LOOPS (Cost=3 Card=1 Bytes=97) 6 5 TABLE ACCESS (BY INDEX ROWID) OF 'taba' (Cost=2 Car d=1 Bytes=41) 7 6 INDEX (RANGE SCAN) OF 'INN_taba_10' (NON-UNIQUE) (Cost=4 Card=2) 8 5 INDEX (RANGE SCAN) OF 'AK_Tabb' (NON-UNIQUE) (Cost=1 Card=1) queqlu''un a une idée comment eviter le dual(trop consommateur), le principe est d'afficher le resultat 1 quand il ya des lignesramenées par la sous requete et 0 sinon. Merci d'avance!!! |
|
|
00
|
|
|
#2 | ||
|
Membre actif
![]() Inscription : août 2007 Messages : 176 ![]() |
Code :
|
||
|
|
00
|
|
|
#3 |
|
Nouveau Membre du Club
![]() Inscription : août 2006 Messages : 137 ![]() |
Merci pour votre reponse, mais le 1 est affiché dans les deux cas, cette transforamtion ne reponds pour le cas vide avec 0,
|
|
|
00
|
|
|
#4 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
si le coût est si important sur DUAL c'est probablement un problème de stats... dual n'est absolument pas consommateur avec sa colonne unique et sa seule ligne
|
|
|
00
|
|
|
#5 | ||
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 453 ![]() |
Reprenons le code de Loyd
Code :
PS : Ne pas mettre de nom de colonnes dans un EXISTS.
__________________
More Code : More Bugs. Less Code : Less Bugs |
||
|
|
00
|
|
|
#6 | |
|
Membre actif
![]() Inscription : août 2007 Messages : 176 ![]() |
Citation:
En pl/sql, il suffit juste de jouer avec l'exception no_data_found En sql pur, aucune valeur ne sera retourné et la variable stockant le résultat vaudra NULL Expliques nous d'avantage comment cette requête est utilisée au sein de ton traitement, on pourra mieux adapter nos réponses |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com