您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

SQL-使用联接筛选大表-最佳做法

SQL-使用联接筛选大表-最佳做法

因为您使用的是INNER JOIN,所以WHERE或JOIN辩论仅取决于您的品味和风格。就个人而言,我喜欢在ON子句中保留两个表之间的链接(例如,外键约束),而在WHERE子句中保留针对数据的实际过滤器。

sql Server会将查询解析为相同的令牌树,因此将构建相同的查询执行计划。

如果您使用的是[LEFT / RIGHT] OUTER JOINS,那么它会带来很大的不同,因为不仅性能可能不同,而且结果也很可能不同。

要回答您的其他问题:

什么时候最好过滤我的数据?

在WHERE或ON子句中,两者被视为相同。对于3,“ 一个 内部联接”没有任何意义。在多表INNER JOIN场景中,哪个先行(在查询中)实际上并不重要,因为查询优化器将按其认为合适的顺序进行排序。

使用临时表完全没有必要,也无济于事,因为无论如何,您都必须提取相关部分-这也是JOIN也会做的。此外,如果在JOIN条件/ WHERE过滤器上具有良好的索引,则该索引将仅用于 访问 相关数据,而无需查看表的其余部分。

SQLServer 2022/1/1 18:42:11 有502人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶