Sql server 连接-条件差异:放置在左侧或右侧

Sql server 连接-条件差异:放置在左侧或右侧,sql-server,performance,join,sql-server-2012,Sql Server,Performance,Join,Sql Server 2012,在以下两个查询中,唯一的区别是交换了条件。 这会对性能产生影响吗? 哪一个是可取的?我在网上搜索过,运气不好。请帮忙 第一个问题: select order_date, order_amount from customers join orders on customers.customer_id = orders.customer_id where customer_id = 3 第二个问题: select order_date, order_amount fro

在以下两个查询中,唯一的区别是交换了条件。
这会对性能产生影响吗?
哪一个是可取的?我在网上搜索过,运气不好。请帮忙

第一个问题:

select order_date, order_amount 
 from customers 
 join orders 
    on customers.customer_id = orders.customer_id 
 where customer_id = 3 
第二个问题:

select order_date, order_amount 
 from customers 
 join orders 
    on orders.customer_id = customers.customer_id 
 where customer_id = 3 

Prdp的评论完美地总结了答案。答案是否定的。但为了进一步澄清并向您提供更多信息:

SQLServer使用TSQL,这是一种声明性语言。要从post中窃取,声明性的定义是:

表示所需计算结果的编程范例 没有描述实现它的步骤(也缩写为 “描述什么,而不是如何描述”)


这基本上可以理解为,您告诉SQL Server您想要返回什么,并为连接之类的事情提供逻辑,SQL Server将找到最好的方法。如果它必须重新安排连接,进行隐式转换,那么它将以生成最佳计划为目的

不,你为什么不比较一下执行计划?……但最有可能的答案是“不,不会有区别”没有区别。唯一的区别在于可读性——也就是说,第一个比第二个更可读。没有区别。您应该在
where
子句中得到一个不明确的列错误。您需要限定列
customer\u id