我正在创建一个查询,它将显示来自 8 个表的记录的信息。最初编写查询的开发人员使用“其中 this 等于 this”和“this 等于 this”的组合来创建连接。
此后,我将查询更改为使用 INNER JOINS。我想知道我的方法是否比使用 WHERE 运算符的组合更好。
根据良好实践的衡量标准,INNER JOINS 的组合是一个不错的选择,还是我应该采用不同的技术。
我正在创建一个查询,它将显示来自 8 个表的记录的信息。最初编写查询的开发人员使用“其中 this 等于 this”和“this 等于 this”的组合来创建连接。
此后,我将查询更改为使用 INNER JOINS。我想知道我的方法是否比使用 WHERE 运算符的组合更好。
根据良好实践的衡量标准,INNER JOINS 的组合是一个不错的选择,还是我应该采用不同的技术。
从性能的角度来看,不会有任何区别......至少在像 Sql-server / Oracle 这样的突出 RDBMS 上没有......这些数据库引擎能够识别两种模式意味着相同并使用相同的执行计划两个都...
在我看来,两者都是同样好的做法,但你应该保持一致性和适当的对齐......在某处我听说 oracle 开发人员通常使用 where 子句,而 Sql-Server 使用内部连接......对此不太确定...到目前为止,大多数编码人员都能够理解这两种类型的查询...
我相信两者之间没有性能差异:
ANSI 风格
SELECT * FROM Table1 a JOIN TABLE2 b on a.id = b.id
老款式
SELECT * FROM Table1 a , TABLE2 b
WHERE a.id = b.id
ANSI 样式更新、更易读、更漂亮,我更喜欢旧样式,尤其是在加入超过 4/5 个表时……也许是因为我是一个 Oracle 开发人员,就像在 o_O 之前所说的那样
两者的行为都相同(如国王所说)。我个人更喜欢 INNER/OUTER/LEFT JOIN 语法,因为它更直观/明确。当您在 WHERE 子句中使用连接条件进入 LEFT JOIN 时,您必须开始使用加号,然后您必须记住将它们放在哪一边。呃。
似乎(再次如国王所说)Oracle 开发人员倾向于将连接条件放入 WHERE 子句中。
-杰米特