加入操作导致 SQL 查询变慢

3

我们就SQL Server 2008和连接进行了讨论。一半人说,连接越多,SQL 运行得越慢。另一半人则认为这并不重要,因为 SQL Server 能够自动处理,所以你不会注意到任何性能损失。哪个说法是正确的呢?


1
它会影响性能,可能会更好,也可能会更差。这完全取决于你连接的方式、连接的内容以及你的其他选择。 - Albin Sunnanbo
2
你是在询问规范化的好处吗? - Martin Smith
1
@Martin 很好的问题。非规范化,因此减少连接是数据仓库中用于加速处理的一种方法。但您不会希望像这样运行您的操作数据库,因为更新和保持一致性将变得非常混乱。 - Matt Gibson
2个回答

2

不要按照您的方式提问,考虑以下问题:

  • 我能否在没有连接的情况下获取所需数据?
    • 否 => 您需要连接,讨论结束。

这也是一个程度问题。连接无法避免添加额外的处理。即使查询优化器将其移除(例如,左连接与未使用连接的内容)- 解析它仍然需要CPU周期。

现在,如果问题是关于比较连接和另一种技术,例如LEFT JOIN + IS NULL与NOT EXISTS的特殊情况,用于X中的记录不在Y中的场景,那么让我们讨论具体细节 - 表大小(X vs Y),索引等。


1
如果你需要它,就需要它。而且很难猜测查询优化器,需要对每种情况进行分析并确定哪种最好。 - Binary Worrier

0

它会减慢速度:查询越复杂,数据库服务器执行它所需的工作就越多。

但是关于那个“性能损失”:相对于什么?是否有另一种获取相同数据的方法?如果有,那么您可以将各种选项进行分析比较,以确定哪个最快。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接