sql-server – WHERE子句更好地在IN和JOIN之前执行

前端之家收集整理的这篇文章主要介绍了sql-server – WHERE子句更好地在IN和JOIN之前执行前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我读过这篇文章
Logical Processing Order of the SELECT statement

文章末尾已经写了ON和JOIN子句考虑之前的WHERE。

考虑到我们有一个拥有10 milion的主表和一个详细表(参考主表(FK)),具有50 milion的记录。我们有一个查询,根据主表中的PK只有100个记录细节表。

在这种情况下,ON和JOIN在WHERE之前执行?我的意思是说,我们在JOIN之后有500 milion的记录,然后在哪里应用?或者先是应用,然后JOIN和ON考虑?如果第二个答案是真的,它与顶部不一致文章

谢谢

解决方法

没关系

始终尊重逻辑处理订单:无论实际处理顺序如何

INNER JOINS和WHERE条件是有效的关联和交换(因此ANSI-89“加入在哪里”语法),所以实际的顺序并不重要

外部联接和更复杂的查询的逻辑顺序变得很重要:在OUTER表上应用WHERE会彻底改变逻辑。

同样,只要通过遵循逻辑处理顺序维护查询语义,优化器如何在内部执行并不重要。

这里的关键词是“优化”:它完全是它所说的

猜你在找的MsSQL相关文章