2010 ami levin. sql server implements three different physical operators to perform joins. in this...

20
2010 PHYSICAL JOIN OPERATORS Ami Levin

Upload: allyson-gilbert

Post on 18-Jan-2018

217 views

Category:

Documents


0 download

DESCRIPTION

SELECTX,Y,Z… FROM[Table1] INNER JOIN [Table2] ON [Table1].[C1] = [Table2].[C1] AND [Table1].[C2] = [Table2].[C2] WHERE…

TRANSCRIPT

Page 1: 2010 Ami Levin. SQL Server implements three different physical operators to perform joins. In this session we will see how each of these three operators

2010

PHYSICAL JOIN OPERATORS

Ami Levin

Page 2: 2010 Ami Levin. SQL Server implements three different physical operators to perform joins. In this session we will see how each of these three operators

SESSION GOALS• SQL Server implements three different physical

operators to perform joins. In this session we will see how each of these three operators work, its advantages and challenges.

• We will try to understand the logic behind the optimizer’s decisions on which operator to use for various joins using (semi) real life examples and see examples about how to avoid common pitfalls.

Page 3: 2010 Ami Levin. SQL Server implements three different physical operators to perform joins. In this session we will see how each of these three operators

EQUI-INNER-JOINSELECT X,Y,Z…FROM [Table1] INNER JOIN [Table2]

ON [Table1].[C1] = [Table2].[C1]

AND [Table1].[C2] = [Table2].[C2]WHERE …

Page 4: 2010 Ami Levin. SQL Server implements three different physical operators to perform joins. In this session we will see how each of these three operators

NEXT TIME• Outer Joins• Non Equi-Joins• Logical Processing Order• NULL Value Issues• Join Parallelism• Partitioned Joins

Page 5: 2010 Ami Levin. SQL Server implements three different physical operators to perform joins. In this session we will see how each of these three operators

WHAT IS A JOIN

Page 6: 2010 Ami Levin. SQL Server implements three different physical operators to perform joins. In this session we will see how each of these three operators

NESTED LOOPSFetch next row from blue input

No More Rows?Quit

Find matching rows in red input

False

True

Start

Page 7: 2010 Ami Levin. SQL Server implements three different physical operators to perform joins. In this session we will see how each of these three operators

CONSIDERATIONS• “Outer Loop” = The Number of Iterations• At Least One Small Input Preferable

• “Inner Operation” = Work for Each Iteration• Index/Table Scan• Index Seek with Lookup• Covering Index Seek

Page 8: 2010 Ami Levin. SQL Server implements three different physical operators to perform joins. In this session we will see how each of these three operators

FOREIGN KEY JOINS• Joins Parents and Childs• Most Common Relationship is One-to-Many• Parent IS Indexed Primary Key or Unique• Indexing Foreign Keys Enables Efficient Use

of Nested Loops

Page 9: 2010 Ami Levin. SQL Server implements three different physical operators to perform joins. In this session we will see how each of these three operators

NESTED LOOPS

DEMO

Page 10: 2010 Ami Levin. SQL Server implements three different physical operators to perform joins. In this session we will see how each of these three operators

MERG

E

Fetch next row from blue input

Fetch next row from red input

True

Start

Rows Match?

False

Quit No More Rows?

False

True

Page 11: 2010 Ami Levin. SQL Server implements three different physical operators to perform joins. In this session we will see how each of these three operators

CONSIDERATIONS• Input Must be Pre-Sorted• By All Join Expression(s)• Pre-Sorted in Plan, not necessarily in DB…

• Immediate & Sorted Match Outputs• FASTFIRSTROW Hint

• Very Efficient and Simple Operator

Page 12: 2010 Ami Levin. SQL Server implements three different physical operators to perform joins. In this session we will see how each of these three operators

MERGE

DEMO

Page 13: 2010 Ami Levin. SQL Server implements three different physical operators to perform joins. In this session we will see how each of these three operators

Fetch next row from blue input

No more rows?

Fetch next row from red input

False

Start

Apply “hash” function

Place row in “hash” bucket

No more rows?

Apply “hash” function

False

True

True

Probe bucket for matching rows

Quit

HASH- MATCH

Page 14: 2010 Ami Levin. SQL Server implements three different physical operators to perform joins. In this session we will see how each of these three operators

CONSIDERATIONS• Hash Function Selection• CPU, Memory and potential I/O Overhead• No Sorting Whatsoever• Probing Costs Not Revealed• May Indicate Sub-Optimal Indexing

Page 15: 2010 Ami Levin. SQL Server implements three different physical operators to perform joins. In this session we will see how each of these three operators

HASH MATCH

DEMO

Page 16: 2010 Ami Levin. SQL Server implements three different physical operators to perform joins. In this session we will see how each of these three operators

CONCLUSION Nested Loops Merge Hash

Good choice when Small outer inputInner input indexed

Pre-sorted inputsSorting required

Very large inputsNot well indexed

CPU consumption Low Low*Unless requires sorting High

Memory usage Low Low*Unless requires sorting High

Logical reads High Low Low* ‘Hidden’ cost of probes

Output matches Fast Fast Slow

Page 17: 2010 Ami Levin. SQL Server implements three different physical operators to perform joins. In this session we will see how each of these three operators

FOR MORE INFORMATION• Books On Line• Microsoft White Papers• “SQL Server 2008 Internals”• Kalen Delaney, Kimberly L.Tripp and more…

• Craig Freedman’s MSDN Blog• http://blogs.msdn.com/craigfr/about.aspx

Page 18: 2010 Ami Levin. SQL Server implements three different physical operators to perform joins. In this session we will see how each of these three operators

PHYSICAL JOIN OPERATORS

Q&A?

Page 19: 2010 Ami Levin. SQL Server implements three different physical operators to perform joins. In this session we will see how each of these three operators

THANK YOU

Page 20: 2010 Ami Levin. SQL Server implements three different physical operators to perform joins. In this session we will see how each of these three operators

COMING UP…P/X001Designing High Scale OLTP systemsThomas KejserP/L001TSQL Techniques – Why and how to tune a routineDave BallantyneP/L002Implementing Common Business Calculations in DAXChris WebbP/L005Consolidating data collection with SQLDIAG and analysing it all with SQLNexus Christian BoltonP/T007Introduction to SQL Modelling Services Robert Hogg

#SQLBITS