gpt4 book ai didi

sql - 在 JOIN 子句和 WHERE 子句中放置条件的区别

转载 作者:行者123 更新时间:2023-12-04 18:43:55 25 4
gpt4 key购买 nike

假设我有 3 个表。

销售代表

  • 代表代码
  • 名字
  • 姓氏
  • 电话
  • 电子邮件
  • 销售团队

订单

  • 订单号
  • 代表代码
  • 客户编号
  • 订购日期
  • 订单状态

客户

  • 客户编号
  • 姓名
  • 地址
  • 电话号码

我想获取 2010 年销售的详细报告。我会加入。我很想知道以下哪一项更有效,为什么?

SELECT 
O.OrderNum, R.Name, C.Name
FROM
Order O INNER JOIN Rep R ON O.RepCode = R.RepCode
INNER JOIN Customer C ON O.CustomerNumber = C.CustomerNumber
WHERE
O.OrderDate >= '01/01/2010'

SELECT 
O.OrderNum, R.Name, C.Name
FROM
Order O INNER JOIN Rep R ON (O.RepCode = R.RepCode AND O.OrderDate >= '01/01/2010')
INNER JOIN Customer C ON O.CustomerNumber = C.CustomerNumber

最佳答案

JOIN 必须反射(reflect)表的关系方面。 WHERE 子句,是你过滤记录的地方。我更喜欢第一个。

首先使其可读,表关系应该是显而易见的(通过使用 JOIN),然后是剖析

效率方面,唯一知道的方法是分析它,不同的数据库在执行查询时有不同的计划

其中一些数据库可能先应用过滤器,然后再进行连接;某些数据库可能会先盲目连接表,然后再执行 where 子句。尝试分析,在 Postgres 和 MySQL 上使用 EXPLAIN SELECT ...,在 SQL Server 中使用 Ctrl+K,在 SQL Server 中你可以看到两个查询中哪一个相对于彼此更快

关于sql - 在 JOIN 子句和 WHERE 子句中放置条件的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2792646/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com