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