Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在选择和内部联接中使用的区别_Sql_Sql Server_Performance_Select_Inner Join - Fatal编程技术网

Sql 在选择和内部联接中使用的区别

Sql 在选择和内部联接中使用的区别,sql,sql-server,performance,select,inner-join,Sql,Sql Server,Performance,Select,Inner Join,我想知道在使用中是否存在性能差异 SELECT Table1.* FROM Table1 WHERE Col1 IN (SELECT Col2 FROM Table2) 及 这两个人做不同的事情。in版本将不会返回重复项。内部联接不返回重复项 通常,内部连接版本具有更好的性能,尽管这取决于数据和数据库 我通常会使用: 这可以直接利用table2col2上的索引。这两种方法的作用不同。in版本将不会返回重复项。内部联接不返回重复项 通常,内部连接版本具有更好的性能,尽管这取决于数据和数据库 我通

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

SELECT Table1.*
FROM Table1
WHERE Col1 IN (SELECT Col2 FROM Table2)


这两个人做不同的事情。in版本将不会返回重复项。内部联接不返回重复项

通常,内部连接版本具有更好的性能,尽管这取决于数据和数据库

我通常会使用:


这可以直接利用table2col2上的索引。

这两种方法的作用不同。in版本将不会返回重复项。内部联接不返回重复项

通常,内部连接版本具有更好的性能,尽管这取决于数据和数据库

我通常会使用:


这可以直接利用table2col2上的索引。

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

您可以通过连接或子查询来编写SQL,SQL Server将始终在执行计划中对其进行转换


您可以看到更多信息:

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

您可以通过连接或子查询来编写SQL,SQL Server将始终在执行计划中对其进行转换

你可以看到更多:

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

若我需要这两个表的列,那个么我将使用内部联接

SELECT Table1.*
FROM Table1 INNER JOIN Table2
ON Table1.Col1 = Table2.Col2
在一对一关系中,根据需求,内部联接将执行得更好

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

若我需要这两个表的列,那个么我将使用内部联接

SELECT Table1.*
FROM Table1 INNER JOIN Table2
ON Table1.Col1 = Table2.Col2

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

后者必须更好,因为前者重复从表2中选择Col2每个表1行我会说没有任何区别,因为您仅从表1中选择。但是使用第二个查询可以从表2中返回列。不太确定它在索引和读取等方面意味着什么当对性能有疑问时,请在SQL Server Management Studio中检查实际的查询计划。@pfx我无权通过我们的DBA@asmgx很遗憾听到这个消息,因为执行计划是查看查询影响的一个很好的工具,这有助于编写更好的查询。更好的查询使DBA更快乐。应该说服他。后者必须更好,因为前者重复从表2中选择Col2每个表1行我会说没有任何区别,因为您只从表1中选择。但是使用第二个查询可以从表2中返回列。不太确定它在索引和读取等方面意味着什么当对性能有疑问时,请在SQL Server Management Studio中检查实际的查询计划。@pfx我无权通过我们的DBA@asmgx很遗憾听到这个消息,因为执行计划是查看查询影响的一个很好的工具,这有助于编写更好的查询。更好的查询使DBA更快乐。应该能说服他。
SELECT Table1.*
FROM Table1
WHERE Col1 IN (SELECT Col2 FROM Table2)
SELECT Table1.*
FROM Table1 INNER JOIN Table2
ON Table1.Col1 = Table2.Col2