Hi Gurus,
 
My senior DBA always tell us that the "not in" command sucks and we are all
encourage to use the select count(*). SQL A is greatly frowned upon and SQL
B will be the best.
 
SQL A :
SELECT col1,col2 
  FROM Table_1 
 WHERE (col1,col2) NOT IN (SELECT col3,col4 
                             FROM Table_2 
                            WHERE col3 = col1 
                              AND col4 = col2); 
SQL B :
SELECT col1,col2 
  FROM Table_1 A
 WHERE (0=(SELECT COUNT(*) FROM Table_2 b WHERE b.col3=a.col1 AND
b.col4=a.col2));
 
Qn : Is it true ? Could someone shed some light ? Please advise. Thanks.
 
Regds,
Catherine

-----Original Message-----
Sent: Wednesday, March 27, 2002 8:19 PM
To: CHAN Chor Ling Catherine (CSC)



Hello Catherine 

Thanks first of all for your suggestions. 
The indexes were already in exitance before your email, so I did not even
try that. 
But your query and that of Marco van Rooy ran exactly the same number of
seconds. 
They are both basicly the same. 
Marco's looked like this... 

SELECT col1,col2 
  FROM Table_1 
 WHERE (col1,col2) NOT IN (SELECT col3,col4 
                             FROM Table_2 
                            WHERE col3 = col1 
                              AND col4 = col2); 

Because both yours and Marcos brought the data back in so short a time
*16sec*, I have not yet experimented with any of the others.

Thanks again 
Rgds 
Denham 

-----Original Message----- 
<mailto:[EMAIL PROTECTED]> ] 
Sent: Wednesday, March 27, 2002 2:00 PM 
To: '[EMAIL PROTECTED]' 


Hi Denham, 
  
I would like to know which solution is the fastest. 
  
Regds, 
Catherine 

-----Original Message----- 
Sent: Wednesday, March 27, 2002 7:44 PM 
To: Multiple recipients of list ORACLE-L 


Hi List 
  
Thank you to everyone who took the time to answer, I never realised that 
there could be so many solutions :) 
  
Rgds 
Denham 

-----Original Message----- 
Sent: Wednesday, March 27, 2002 10:53 AM 
To: Multiple recipients of list ORACLE-L 



Hello List 

Is there anyone who can give me a solution to this problem. 
It is a sql that runs forever and I eventually have to kill it, both tables 
are large 500000 + rows. 
Is there perhaps a quicker more effecient way of doing this. 


SELECT col1,col2 
FROM Table_1 
WHERE (col1,col2) NOT IN (SELECT col3,col4 FROM Table_2); 


TIA 
Denham Eva 
Oracle DBA 

  _____  

This e-mail message has been scanned for Viruses and Content and cleared by 
MailMarshal - For more information please visit 
< http://www.marshalsoftware.com <http://www.marshalsoftware.com> >
www.marshalsoftware.com 
  _____  


  _____  

This e-mail message has been scanned for Viruses and Content and cleared by 
MailMarshal - For more information please visit 
< http://www.marshalsoftware.com <http://www.marshalsoftware.com> >
www.marshalsoftware.com 
  _____  

  _____  

This e-mail message has been scanned for Viruses and Content and cleared by
MailMarshal - For more information please visit
<http://www.marshalsoftware.com> www.marshalsoftware.com 
  _____  


-- 
Please see the official ORACLE-L FAQ: http://www.orafaq.com
-- 
Author: CHAN Chor Ling Catherine (CSC)
  INET: [EMAIL PROTECTED]

Fat City Network Services    -- (858) 538-5051  FAX: (858) 538-5051
San Diego, California        -- Public Internet access / Mailing Lists
--------------------------------------------------------------------
To REMOVE yourself from this mailing list, send an E-Mail message
to: [EMAIL PROTECTED] (note EXACT spelling of 'ListGuru') and in
the message BODY, include a line containing: UNSUB ORACLE-L
(or the name of mailing list you want to be removed from).  You may
also send the HELP command for other information (like subscribing).

Reply via email to