SQL JOIN的ON是否暗示WHERE?

时间:2018-04-04 02:04:01

标签: sql tsql ssms

当将一个非常大的表连接到一个小表时,我尝试在我的连接查询中尽可能具体。但是我会过火了吗?

假设我的SmallTable只有一列,只有三个值:“Peter”,“Paul”和“Mary”。我最终会加入一堆巨大的表格。我应该在我的联接中放置WHERE语句以缩小连接的select语句吗?或者联接意味着哪里条件?

df.loc[(df['States/cities'].str.isupper()) & (df['States/cities'].apply(len) == 2)]

1 个答案:

答案 0 :(得分:0)

我认为您当前拥有的版本是最佳版本,因为您的WHERE限制将使数据库不会聚合在最终将在联接中最终将在外部查询中丢弃的结果。您当前使用LIKE可能会排除索引,但数据库也可以使用该WHERE子句中的索引,以获得更好的性能。

替代这一点,即依赖小表的连接,会过滤掉你不想要的名字,但到那时聚合就已经在整个大表上完成了。