答案 0 :(得分:4)
在{em}足够用于您的目的时,我绝对会偏爱INNER JOIN
-在您不希望/不需要(可能)控制每行行为的地方。它在所有SQL数据库中实现(CROSS APPLY
不一定在任何地方都可用),并且避免了在不需要的地方增加认知开销。
例如您不会让未来的读者试图了解为什么只在1、5或30分钟后对他们使用CROSS APPLY
来得出结论“我认为应该只是INNER JOIN
”。现在他们在怀疑自己,您使查询变得更加难以快速理解。将其保存在必要的位置,然后突出显示“在此更多注意”。
答案 1 :(得分:0)
我怀疑即使在一个简单的列到列条件下仅连接2个表,它也会更快。 SQL优化器会在内部将交叉应用交叉转换为内部联接,但不会发生相反的情况。当交叉应用无法转换为内部联接时,则必须在每一行执行。唯一重要的是供应值更改的频率,因此需要重新计算表达式。我个人不使用交叉申请,除非我别无选择,例如表值函数。