我想知道在使用时是否存在性能差异
SELECT Table1.*
FROM Table1
WHERE Col1 IN (SELECT Col2 FROM Table2)
和
SELECT Table1.*
FROM Table1 INNER JOIN Table2
ON Table1.Col1 = Table2.Col2
发布于 2018-05-29 08:52:10
通常,连接比子查询的工作速度更快。但有时性能可能取决于表中的数据或其他因素。
您可以通过JOIN或SUBQUERY来编写SQL,SQL Server将始终根据执行计划对其进行转换。
你可以看到更多:https://www.essentialsql.com/what-is-the-difference-between-a-join-and-subquery/
发布于 2018-05-29 08:32:52
这两者做了不同的事情。in
版本不会返回重复项。inner join
确实返回重复项。
通常,inner join
版本具有更好的性能,尽管这取决于数据和数据库。
我通常会使用exists
SELECT t1.*
FROM Table1 t1
WHERE EXISTS (SELECT FROM Table2 t2 WHERE t2.Col2 = t1.col1);
这可以直接利用table2(col2)
上的索引。
发布于 2018-05-29 12:49:48
SELECT Table1.*
FROM Table1
WHERE Col1 IN (SELECT Col2 FROM Table2)
在这个查询中,我不能在结果集中使用table2的任何列。
如果我需要两个表的列,那么我将使用内部连接。
SELECT Table1.*
FROM Table1 INNER JOIN Table2
ON Table1.Col1 = Table2.Col2
在一对一的关系中,根据需要,内部连接会执行得更好。
https://stackoverflow.com/questions/50574732
复制相似问题