首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用IN SELECT和INNER JOIN的区别

使用IN SELECT和INNER JOIN的区别
EN

Stack Overflow用户
提问于 2018-05-29 08:15:40
回答 3查看 147关注 0票数 1

我想知道在使用时是否存在性能差异

代码语言:javascript
复制
SELECT Table1.*
FROM Table1
WHERE Col1 IN (SELECT Col2 FROM Table2)

代码语言:javascript
复制
SELECT Table1.*
FROM Table1 INNER JOIN Table2
ON Table1.Col1 = Table2.Col2
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-05-29 08:52:10

通常,连接比子查询的工作速度更快。但有时性能可能取决于表中的数据或其他因素。

您可以通过JOIN或SUBQUERY来编写SQL,SQL Server将始终根据执行计划对其进行转换。

你可以看到更多:https://www.essentialsql.com/what-is-the-difference-between-a-join-and-subquery/

票数 1
EN

Stack Overflow用户

发布于 2018-05-29 08:32:52

这两者做了不同的事情。in版本不会返回重复项。inner join确实返回重复项。

通常,inner join版本具有更好的性能,尽管这取决于数据和数据库。

我通常会使用exists

代码语言:javascript
复制
SELECT t1.*
FROM Table1 t1
WHERE EXISTS (SELECT FROM Table2 t2 WHERE t2.Col2 = t1.col1);

这可以直接利用table2(col2)上的索引。

票数 3
EN

Stack Overflow用户

发布于 2018-05-29 12:49:48

代码语言:javascript
复制
SELECT Table1.*
FROM Table1
WHERE Col1 IN (SELECT Col2 FROM Table2)

在这个查询中,我不能在结果集中使用table2的任何列。

如果我需要两个表的列,那么我将使用内部连接。

代码语言:javascript
复制
SELECT Table1.*
FROM Table1 INNER JOIN Table2
ON Table1.Col1 = Table2.Col2

在一对一的关系中,根据需要,内部连接会执行得更好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50574732

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档