我在我们的系统中发现了一个遗留的sproc,包括冗余的第二个连接,这是出于“性能原因”。
但是如果我查看查询执行计划,那么第二次连接实际上会使查询成本增加约30%。
第二次加入会不会提高性能?当他或她添加第二次加入时,原作者可能会想到什么?
第二次加入可以提高性能。 Join可用于过滤,从而减少行数。
如果对连接键进行索引,则尤其如此,因此可以非常快速地进行过滤。
缩减的结果集还可以加速聚合和排序。
如果结果集完全相同,则第二个连接可以通过启用更好的执行计划来提高性能。但是,可能还有其他方法可以实现相同的目标。
如果要连接的附加表包含可以在查询中使用的索引,而其他表没有...那么由于能够使用索引而不是完整扫描,您可能会获得性能提升。
我的猜测是你最好只将索引添加到其中一个现有表中并避免额外的连接,但我想这取决于具体情况?
这是我能想到的唯一好处(假设您实际上不需要选择任何字段)!