patternMinor
Filters Joins or Where clauses TSQL
Viewed 0 times
tsqlwherefiltersjoinsclauses
Problem
Where should I put the filters on a TSQL query?
OR
I'm looking for performance issues or good practices.
SELECT a.colum FROM A
JOIN B ON A.ID = B.ID AND B.STATUS = 1OR
SELECT a.colum FROM A
JOIN B ON A.ID = B.ID
WHERE B.STATUS = 1I'm looking for performance issues or good practices.
Solution
- There is no performance difference
- Best practice is explicit JOIN and separate filters (your 2nd example)
Note:
This changes for OUTER JOINs because you'd change it to a inner join
The quick way:
SELECT a.colum
FROM
A
LEFT JOIN
B ON A.ID = B.ID AND B.STATUS = 1
WHERE
a.foo = 'bar'With separate filters:
SELECT a.colum
FROM
A
LEFT JOIN
(SELECT * FROM B WHERE STATUS = 1) B ON A.ID = B.ID
WHERE
a.foo = 'bar'Code Snippets
SELECT a.colum
FROM
A
LEFT JOIN
B ON A.ID = B.ID AND B.STATUS = 1
WHERE
a.foo = 'bar'SELECT a.colum
FROM
A
LEFT JOIN
(SELECT * FROM B WHERE STATUS = 1) B ON A.ID = B.ID
WHERE
a.foo = 'bar'Context
StackExchange Database Administrators Q#3683, answer score: 5
Revisions (0)
No revisions yet.