【发布时间】:2013-10-28 23:12:33
【问题描述】:
我了解任何连接都可以通过 CROSS 连接和 WHERE 子句来完成。
我做了一些实验,看起来将相等谓词放在 where 子句中或作为内部连接的参数会产生相同的结果和相同的性能。
此外,使用内部连接不会节省任何输入,因为仍然必须指定连接谓词。
我想各种外连接也是如此。只需指定值可以为 null 或不为 null。
我可以只使用交叉连接吗?
【问题讨论】:
-
答案是性能可能不会受到影响,但是,当您有经验丰富的开发人员查看交叉连接时,它们实际上是内部连接时,可读性和代码清晰度会受到阻碍。
-
不,它们不是必需的。一切都只能基于笛卡尔积+联合和适当的 where 子句来实现。和性能无关,在大多数情况下,查询优化器比人类读者更能理解您的查询。可读性比击键次数更重要,你的代码只输入一次,但会被阅读数百次。