Click here to monitor SSC
SQLServerCentral is supported by Red Gate Software Ltd.
 
Log in  ::  Register  ::  Not logged in
 
 
 
        
Home       Members    Calendar    Who's On


Add to briefcase

Order of JOIN in multiple table joins Expand / Collapse
Author
Message
Posted Monday, January 28, 2013 9:04 AM
Valued Member

Valued MemberValued MemberValued MemberValued MemberValued MemberValued MemberValued MemberValued Member

Group: General Forum Members
Last Login: Monday, April 29, 2013 1:59 AM
Points: 53, Visits: 101
I want to know how order of joins executed in sql server. Suppose i have used 3 tables in join.

table1 JOIN table2 JOIN table3

Does sql server execute in same sequence as i have written, first get common data from table1 and table2 then rest result and table3?

As i know WHERE clause dont executed by sql in the sequence that we write in query, so it raise question for me does for join.
Post #1412487
Posted Monday, January 28, 2013 9:23 AM


SSChampion

SSChampionSSChampionSSChampionSSChampionSSChampionSSChampionSSChampionSSChampionSSChampionSSChampion

Group: General Forum Members
Last Login: Yesterday @ 2:57 PM
Points: 13,058, Visits: 11,884
Not sure I understand the question here. Are you wanting to logically or how the actual internals work?

_______________________________________________________________

Need help? Help us help you.

Read the article at http://www.sqlservercentral.com/articles/Best+Practices/61537/ for best practices on asking questions.

Need to split a string? Try Jeff Moden's splitter.

Cross Tabs and Pivots, Part 1 – Converting Rows to Columns
Cross Tabs and Pivots, Part 2 - Dynamic Cross Tabs
Understanding and Using APPLY (Part 1)
Understanding and Using APPLY (Part 2)
Post #1412498
Posted Monday, January 28, 2013 9:27 AM
Valued Member

Valued MemberValued MemberValued MemberValued MemberValued MemberValued MemberValued MemberValued Member

Group: General Forum Members
Last Login: Monday, April 29, 2013 1:59 AM
Points: 53, Visits: 101
Yes, Because in one of my query, i am joining with 3 tables. And table 1 have the 1 million record, 2 Lakh and table3 have 10 thousands.

I am using inner join, so question came on my mind how order of join works. For the above case it is important to know.
Post #1412503
Posted Monday, January 28, 2013 9:31 AM
SSCrazy

SSCrazySSCrazySSCrazySSCrazySSCrazySSCrazySSCrazySSCrazy

Group: General Forum Members
Last Login: Friday, July 4, 2014 3:55 AM
Points: 2,836, Visits: 5,062
purushottam2 (1/28/2013)
Yes, Because in one of my query, i am joining with 3 tables. And table 1 have the 1 million record, 2 Lakh and table3 have 10 thousands.

I am using inner join, so question came on my mind how order of join works. For the above case it is important to know.


SQL query optimizer should (and most of the times it does) figure out the best sequence by itself.
Saying that, I used to follow my old custom to drive query from the smallest table/data set...




_____________________________________________
"The only true wisdom is in knowing you know nothing"
"O skol'ko nam otkrytiy chudnyh prevnosit microsofta duh!"
(So many miracle inventions provided by MS to us...)

How to post your question to get the best and quick help
Post #1412505
Posted Monday, January 28, 2013 11:53 AM


SSC Eights!

SSC Eights!SSC Eights!SSC Eights!SSC Eights!SSC Eights!SSC Eights!SSC Eights!SSC Eights!

Group: General Forum Members
Last Login: 2 days ago @ 7:16 AM
Points: 945, Visits: 1,769
Eugene Elutin (1/28/2013)
purushottam2 (1/28/2013)
Yes, Because in one of my query, i am joining with 3 tables. And table 1 have the 1 million record, 2 Lakh and table3 have 10 thousands.

I am using inner join, so question came on my mind how order of join works. For the above case it is important to know.


SQL query optimizer should (and most of the times it does) figure out the best sequence by itself.
Saying that, I used to follow my old custom to drive query from the smallest table/data set...




I believe the SQL Optimizer can change the join order for queries that use only inner joins. Once you start introducing Outer Joins the order of the joins matters and a different order of Outer Joins could produce a different result set.

(Now, im currently looking for the source i read this from but having difficulty finding it again. If i find it ill edit this post with a link to the source.)



For faster help in answering any problems Please read How to post data/code on a forum to get the best help - Jeff Moden for the best way to ask your question.

For performance Issues see how we like them posted here: How to Post Performance Problems - Gail Shaw

Need to Split some strings? Jeff Moden's DelimitedSplit8K
Jeff Moden's Cross tab and Pivots Part 1
Jeff Moden's Cross tab and Pivots Part 2

Jeremy Oursler
Post #1412588
Posted Tuesday, January 29, 2013 9:30 AM


Ten Centuries

Ten CenturiesTen CenturiesTen CenturiesTen CenturiesTen CenturiesTen CenturiesTen CenturiesTen Centuries

Group: General Forum Members
Last Login: Wednesday, July 16, 2014 3:21 PM
Points: 1,210, Visits: 2,512
CapnHector (1/28/2013)
Eugene Elutin (1/28/2013)
purushottam2 (1/28/2013)
Yes, Because in one of my query, i am joining with 3 tables. And table 1 have the 1 million record, 2 Lakh and table3 have 10 thousands.

I am using inner join, so question came on my mind how order of join works. For the above case it is important to know.


SQL query optimizer should (and most of the times it does) figure out the best sequence by itself.
Saying that, I used to follow my old custom to drive query from the smallest table/data set...




I believe the SQL Optimizer can change the join order for queries that use only inner joins. Once you start introducing Outer Joins the order of the joins matters and a different order of Outer Joins could produce a different result set.

(Now, im currently looking for the source i read this from but having difficulty finding it again. If i find it ill edit this post with a link to the source.)


The optimizer can construct and use any execution plan that is logically equivalent to the T-SQL query, i.e., it can process joins in any order that yields the required result. The optimizer's entire purpose is to find the most efficient execution plan. It relies on statistics and metadata to make cost-based decisions about how to execute each query, and it almost always does an excellent job. We can get better execution plans by writing queries in a way that allows the optimizer to make full use of the resources available to it, though (read up on SARGable predicates for one example of this).


Jason Wolfkill
Blog: SQLSouth
Twitter: @SQLSouth
Post #1413141
« Prev Topic | Next Topic »

Add to briefcase

Permissions Expand / Collapse