2013-12-18 44 views
0

为了简化我的情况,我使用这个例子。我有一张表电脑和一张表状态。计算机具有计算机和状态的信息计算机的状态(wapt reapir,repaired ...等)。是否有更好的空记录来避免左连接?

的表是:

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

在某些情况下,电脑可以没有状态,所以在IDState Computers表可以为空。这使我在某些情况下必须进行左连接查询。

但我想在国家表中可能有一个空状态。这提高了不使用左连接的性能,或者性能是相同的?

+3

这似乎是一个有效的“国家”没有国家。所以我会为此做一个“未分配”状态。 –

+1

“LEFT JOIN”有什么问题?为什么你觉得他们应该避免? –

+1

在LEFT JOIN中没有什么不好,但同意@TimSchmelter没有状态是有效的状态,所以应用程序应该负责分配它。 –

回答

3

我不认为性能会受到状态左外连接的严重影响:除非您有许多可能的状态。如果你只有几个外连接不会有很大的成本。尽管如此,在尝试优化之前,您应该实际找到证据:查看示例查询及其查询计划。查询计划看起来是否合理?你最终可能会在状态表上进行表扫描,但是它只有10行,而不是100,那么你可能就没问题了。

并说,我会亲自添加一个'未知'状态(或任何合理的调用它)。它使得所有的编码更容易 - 不要记住你必须使用外连接,它使查询更容易阅读。