应该在DB2中避免使用外部联接

时间:2010-03-02 20:32:09

标签: database db2 left-join

我们正在公司进行辩论。我经常使用左外连接退出。另一位程序员告诉我,头顶太多,我不应该使用它们。例如,假设我有两个表,他们宁愿我在数据库中两次获取我需要的信息,每个表将它存储在内存中并加入java端的数据,而不是仅仅执行左外连接。我认为这很荒谬,对性能不利。我错了吗

3 个答案:

答案 0 :(得分:4)

你没错。使用连接最有可能更有效。这就是数据库擅长的。

答案 1 :(得分:3)

我们曾经在应用程序中进行连接,而不是在数据库中有时会在80年代进行连接。但实际上,到了1988年左右,数据库优化器通常对DB2来说已经足够了,不再需要了。

我想不出任何保证应用程序连接的普通场景。一些异常情况,例如当你有一个过载的数据库服务器,胖网络管道,应用服务器上的大量容量,以及一堆新的查询 - 可能会保证一些查询。也许

但是在一般联接中,包括左/右/全外连接是你的朋友。它们允许您拥有更小的表,更好地利用存储和内存等。但您确实需要最新的统计信息,熟悉数据库使用的各种访问路径并养成做的习惯解释

答案 2 :(得分:2)

我的信念是,当你不需要时,你应该避免两次击中数据库。我没有看到左连接比问两次数据更有问题。如果未对FK进行索引,则可能存在性能问题,但这是设计不佳而不是左连接的错误。

最终,必须以某种方式返回相同数量的数据,并且数据库设计为使用连接。

那就是说,你编写查询的方式可能效率不高(当需要内部连接时使用左连接或者根本不需要连接表),没有看到它们我无法知道。