Sql Server:join命令制作不同的执行计划,哪一个有更好的性能?为什么?

时间:2013-02-14 15:59:24

标签: sql sql-server join

select * from AdventureWorks.Sales.Customer c
inner loop join AdventureWorks.Sales.SalesOrderHeader o on o.CustomerID = c.CustomerID

select * from AdventureWorks.Sales.SalesOrderHeader o
inner loop join AdventureWorks.Sales.Customer c on c.CustomerID = o.CustomerID

在MS Sql Server中:以上两个语句可以制定不同的执行计划。 如果我们假设表Customer和表SalesOrderHeader具有非常不同的记录数量级。哪一个有更好的表现?为什么?

1 个答案:

答案 0 :(得分:1)

使用联接提示强制加入订单。查看消息选项卡:有一条消息说明了这一点。

这是使用join-hints的非常不幸的副作用。这使得它们使用起来非常尴尬。

  

哪一个有更好的表现?

查看查询执行时间并计划成本估算以回答这个问题。