【问题标题】:Are these two SQL statements equivalent?这两条 SQL 语句是等价的吗?
【发布时间】:2013-02-24 06:44:17
【问题描述】:

它们返回相同的行数,但我不确定一个是等待发生的事故,还是一个只是“首选方法”:

SELECT duckbill.id, duckbill.pack_size, duckbill.description, duckbill.platypus_id, duckbill.department, duckbill.subdepartment, duckbill.unit_cost, duckbill.unit_list, duckbill.open_qty, duckbill.UPC_code, duckbill.UPC_pack_size, duckbill.crv_id, duckbill_platypuss.platypus_item 
FROM duckbill 
INNER JOIN duckbill_platypuss ON duckbill.platypus_id = duckbill_platypuss.platypus_id

SELECT duckbill.id, duckbill.pack_size, duckbill.description, duckbill.platypus_id, duckbill.department, duckbill.subdepartment, duckbill.unit_cost, duckbill.unit_list, duckbill.open_qty, duckbill.UPC_code, duckbill.UPC_pack_size, duckbill.crv_id, duckbill_platypuss.platypus_item
FROM duckbill, duckbill_platypuss
WHERE (duckbill.platypus_id = duckbill_platypuss.platypus_id)

【问题讨论】:

标签: sql ms-access sql-server-ce inner-join


【解决方案1】:

所以存在差异的原因是由于执行顺序。您可能没有注意到某些表组合的差异,但在非常大的表上,您通常希望先使用 JOIN 进行过滤。

这篇文章为此提供了一些很好的信息,如下所示:Order Of Execution of the SQL query

【讨论】:

  • -1 我发现查询优化器不太可能为这些语句生成不同的计划。
  • @NullUserException 考虑到具体的查询,这很公平。我想我是在更一般地考虑它。虽然,实际上,您在上面的评论中提出的观点更合适;无论如何,逗号连接通常是一个坏习惯。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-21
  • 2011-06-19
  • 2012-11-22
  • 1970-01-01
  • 2014-04-07
  • 1970-01-01
相关资源
最近更新 更多