为了账号安全,请及时绑定邮箱和手机立即绑定

Join和非Join的区别

Join和非Join的区别

绝地无双 2018-12-06 23:09:14
      请各位谈谈二者的本质区别说明Northwind数据库 Orders,Customers,Employees三张表第一段非Join的查询 1 SELECT 2 O.OrderID 订单编号, 3 O.OrderDate 订单日期, 4 (E.FirstName+E.LastName) as 员工姓名, 5 C.ContactName as 客户姓名 6  FROM 7 Orders as O, 8 Employees as E, 9 Customers as C10  WHERE 11 O.EmployeeID = E.EmployeeID 12 AND O.CustomerID = C.CustomerID13 AND O.OrderDate 14 BETWEEN '1996-07-01' and '1996-07-15'15  GO16 17 18     第二段是Join的用法 1 SELECT 2 O.OrderID 订单编号, 3 O.OrderDate 订单日期, 4 (E.FirstName+E.LastName) as 员工姓名, 5 C.ContactName as 客户姓名 6 FROM 7 Orders O JOIN Employees E 8 ON 9 O.EmployeeID = E.EmployeeID10 JOIN11 Customers C12 ON13 O.CustomerID = C.CustomerID14 WHERE15 O.OrderDate BETWEEN '1996-07-01' and '1996-07-15'   显然,两种查询的结果是一致的。它们之间的本质区别在哪呢。哪个更好
查看完整描述

4 回答

?
浮云间

TA贡献1829条经验 获得超4个赞

第一种耗的内存大很多,性能也更低:因为在from 阶段:会生成一张中间临时表供 where 条件进行筛选;第一种情况,是四个表的笛卡尔集;第二种情况是四个表的笛卡尔集并使用 ON 条件进行过滤后的临时表供 where 条件进行筛选。第二种情况一般情况下要比第一种情况少很多行记录,占更少内存,性能更高。

查看完整回答
反对 回复 2019-01-07
?
慕的地8271018

TA贡献1796条经验 获得超4个赞

波形图你还有源码吗?

查看完整回答
反对 回复 2019-01-07
  • 4 回答
  • 0 关注
  • 448 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信