【问题标题】:How do joins compare with other queries in SQL?连接与 SQL 中的其他查询相比如何?
【发布时间】:2018-09-01 12:05:27
【问题描述】:

有什么理由这么说:

SELECT Fname, Lname, Address 
FROM EMPLOYEE, DEPARTMENT
WHERE Dname='Research' AND Dnumber=Dno;

比使用更好/更差:

SELECT Fname, Lname, Address
FROM (EMPLOYEE JOIN DEPARTMENT ON Dno=Dnumber)
WHERE Dname='Research';

第二个可能可读性更好,但是效率上有什么区别吗?

【问题讨论】:

  • comma 加入是老派......最佳实践是明确定义它......谁知道什么时候会弃用旧的
  • 大多数人更喜欢显式语法,但两者都是有效的标准 SQL 语法 (SQL 89/SQL 92)。在性能方面应该没有差异。

标签: sql join processing-efficiency


【解决方案1】:

嗯,你正在做一个交叉连接,它首先创建一个笛卡尔积,然后通过比较每个属性(在你的例子中是 Dnumber 和 Dno)来过滤 where 子句。

但是,在第二个查询中,除非您指定连接类型,否则默认情况下会执行内部连接。这将根据 ON 条件创建结果。这导致查询引擎(可能因供应商和风格而异)使用 ON 条件来执行两个表的交集。

干杯!

【讨论】:

    猜你喜欢
    • 2021-10-03
    • 1970-01-01
    • 2018-03-14
    • 2021-11-08
    • 1970-01-01
    • 1970-01-01
    • 2011-09-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多