SQL JOIN with two or more tables as output - most efficient way?

Posted by littlegreen on Stack Overflow See other posts from Stack Overflow or by littlegreen
Published on 2010-05-06T08:17:28Z Indexed on 2010/05/06 9:08 UTC
Read the original article Hit count: 158

Filed under:
|
|

I have an SQL query that executes a LEFT JOIN on another table, then outputs all results that could be coupled into a designated table. I then have a second SQL query that executes the LEFT JOIN again, then outputs the results that could not be coupled to a designated table. In code, this is something like:

INSERT INTO coupledrecords
SELECT b.col1, b.col2... s.col1, s.col2... FROM bigtable AS b
LEFT JOIN smallertable AS s
ON criterium
WHERE s.col1 IS NOT NULL

INSERT INTO notcoupledrecords
SELECT b.col1, b.col2... bigtable AS b
LEFT JOIN smallertable AS s
ON criterium
WHERE s.col1 IS NULL

My question: I now have to execute the JOIN two times, in order to achieve what I want. I have a feeling that this is twice as slow as it could be. Is this true, and if yes, is there a way to do it more efficiently?

© Stack Overflow or respective owner

Related posts about sql-server

Related posts about sql