请各位谈谈二者的本质区别说明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 条件进行筛选。第二种情况一般情况下要比第一种情况少很多行记录,占更少内存,性能更高。
- 4 回答
- 0 关注
- 448 浏览
添加回答
举报
0/150
提交
取消