第二次加入是否会提高查询性能?

时间:2018-06-14 23:19:40

标签: sql sql-server ssms

我在我们的系统中发现了一个遗留的sproc,包括冗余的第二次连接,这是出于“性能原因”。

enter image description here 但是,如果我查看查询执行计划,则第二次连接实际上会将查询成本提高约30%。

enter image description here

第二次加入是否能提高性能?原作者在添加第二次加入时可能会想到什么?

2 个答案:

答案 0 :(得分:3)

第二次加入可以提高性能。 Join可以用于过滤,这可以减少行数。

如果对连接键进行索引,则尤其如此,因此可以非常快速地进行过滤。

缩小的结果集还可以加快聚合和排序。

如果结果集完全相同,则第二个连接可以通过启用更好的执行计划来提高性能。但是,可能还有其他方法可以实现相同的目标。

答案 1 :(得分:0)

如果要加入的附加表包含可以在查询中使用的索引,而其他表没有...则可以通过使用索引而不是完整来获得性能提升扫描。

我的猜测是,您只需将索引添加到其中一个现有表并避免额外加入,但我想这取决于具体情况?

这是我能想到的唯一好处(假设您实际上并不需要选择任何字段)!