作者:乐在hhh其中 | 来源:互联网 | 2023-10-11 10:22
比如:selectorder.orderID,order.createTime,orderDetial.productNamefromorder,orderDetailwhereord
比如:
select order.orderID, order.createTime,orderDetial.productName from order,orderDetail where order.orderID=orderDetail.orderID and order.employeeName='a name'
select order.orderID, order.createTime,orderDetial.productName from order inner join orderDetail on order.orderID=orderDetail.orderID where order.employeeName='a name'
两种方法可以得到同样的查询结果。
不知道这两种方法的效率,是否会有区别????
感觉第一种方法,也起来似乎要简单一些!?
请大虾指点一下
11 个解决方案
得到的结果是一样的
inner join 是优化的where 多表查询!
目前是一樣的, 建議用inner join , 因為microsoft 不能保證在更高版本的sql 中還支持tab1 , tab2 的寫法
很简单,用查询分析器执行一下,看看执行时间长短就知道哪个更好一点了。
where a, b 默认就是内联接 inner join
在 SQL-92 标准中,内联接可在 FROM 或 WHERE 子句中指定。这是 WHERE 子句中唯一一种 SQL-92 支持的联接类型。WHERE 子句中指定的内联接称为旧式内联接。
join 方式的 ON 指向连接条件,而其后的 where 条件是筛选连接条件产生的结果集
即先按连接条件连接两表,后根据条件筛选。
SQL Server会自动优化以上两个查询语句,最后的执行计划应该是相同的。
同意 “目前是一樣的, 建議用inner join , 因為microsoft 不能保證在更高版本的sql 中還支持tab1 , tab2 的寫法”
谢谢大家的解答,看来我以后要改用inner join 的方法了。
这个问题,我在书上从来没有找到个答案,再次谢谢大家
sql server 会自动将select order.orderID, order.createTime,orderDetial.productName from order,orderDetail where order.orderID=orderDetail.orderID
转为:
select order.orderID, order.createTime,orderDetial.productName from order inner join orderDetail on order.orderID=orderDetail.orderID 的 !