Inside SQL Server Joins

 
NESTED-LOOP  JOIN
The optimizer chose one table to process first,and for each row that qualified ( based on any WHERE clause conditions involving columns in that table),SQL Server used the JOIN clause to find all matching rows in the second table. The JOIN clause usually performed an equality comparison between a column in the first table and a column in the second.You can think of nested-loop joins as being the default type of join.
 
MERGE  JOIN
It is appropriate when both input sets to the JOIN operation are ordered by the values in the join column, as would be the case when both have a clustered index on the column you're useing to join the tables. The optimizer usually chooses a merge join when clusted indexes exist on the join column in both tables. SQL Server can perform merge joins only when at leat one of the inputs is known to have unique values in the join column.If both inputs can have duplicates, SQL Server can't process a merge jon by making only one pass through each table,so the optimizer usually choose a nested-loop join instead.
 
HASH  JOIN
SQL Server most often uses hash joins when no useful indexs for joining the tables exists. When performing a hash join on two tables, SQL Server uses one tables (called the build input) to build the hash buckets, each of which contains all the existing data values that generate the same value when the hash function is applied to them. Then, it inspects the other table(called the probe input) one row at a time an tries to find matching values in the hash buckets.
 
EXECUTE  ORDER
The optimizer evaluates possible plans from the simplest to more complex plans
 
The simplest plan is to use the "default" nested-loop join ,so the optimizer evalueates that type first.
If neither nested-loop join nor merge joins will give good performance, the optimizer considers hash joins.
 
Scans Versus Seeks
Don’t mistake Index Scans for Index Seeks
Seek is the only efficient strategy for finding individual rows or a range of qualifying rows
 
Scan generally involves reading all rows of an index and is expensive for large tables unless you really need most of them
If a table has a Clustered Index, a ‘Table’ scan will always be shown as a Clustered Index Scan
 
 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值