与交叉申请相比,内部加入的好处

时间:2018-09-13 13:44:58

标签: sql-server tsql join

据我了解,CROSS APPLYINNER JOIN更好,它可以用于表值表达式,速度更快,等等。

那为什么要完全使用INNER JOIN

来源: 12

2 个答案:

答案 0 :(得分:4)

在{em}足够用于您的目的时,我绝对会偏爱INNER JOIN-在您不希望/不需要(可能)控制每行行为的地方。它在所有SQL数据库中实现(CROSS APPLY不一定在任何地方都可用),并且避免了在不需要的地方增加认知开销。

例如您不会让未来的读者试图了解为什么只在1、5或30分钟后对他们使用CROSS APPLY来得出结论“我认为应该只是INNER JOIN”。现在他们在怀疑自己,您使查询变得更加难以快速理解。将其保存在必要的位置,然后突出显示“在此更多注意”。

答案 1 :(得分:0)

我怀疑即使在一个简单的列到列条件下仅连接2个表,它也会更快。 SQL优化器会在内部将交叉应用交叉转换为内部联接,但不会发生相反的情况。当交叉应用无法转换为内部联接时,则必须在每一行执行。唯一重要的是供应值更改的频率,因此需要重新计算表达式。我个人不使用交叉申请,除非我别无选择,例如表值函数。