有一个空记录以避免左连接更好吗?

时间:2013-12-18 11:10:50

标签: sql tsql

为了简化我的情况,我使用这个例子。我有一张桌子电脑和桌子状态。计算机拥有计算机的信息,并说明计算机的状态(使用reapir,修复等等)。

表格是:

计算机(IDComputer,IDState,...) 状态(IDState,StateCode)

在某些情况下,计算机可能没有状态,因此Computers表中的IDState可以为null。这使我在某些情况下必须进行左连接查询。

但我正在考虑在States表中有一个null状态的可能性。这样可以提高性能,不使用左连接或性能是一样的吗?

1 个答案:

答案 0 :(得分:3)

我认为状态不会受到左外连接的严重影响:除非你有很多很多可能的状态。如果您只有少数外部联接将不会有很大的成本。 话虽如此,在尝试优化之前,您应该找到证据:查看示例查询及其查询计划。查询计划看起来合情合理吗?您最终可能会在状态表上进行表扫描,但是它中只有10行而不是100行,那么您可能没问题。

说过那个,我个人会添加一个'未知'状态(或任何合理的称呼它)。它使所有编码更容易 - 不记得你必须使用外连接,它也使查询更容易阅读。