使用WHERE IN会损害查询性能吗?

Abe*_*ler 4 sql-server

我听说使用IN子句会影响性能,因为它没有正确使用索引.见下面的例子:

SELECT ID, Name, Address 
FROM people
WHERE id IN (SELECT ParsedValue FROM UDF_ParseListToTable(@IDList))
Run Code Online (Sandbox Code Playgroud)

使用下面的表格获得这些结果会更好吗?

SELECT ID,Name,Address
FROM People as p
INNER JOIN UDF_ParseListToTable(@IDList) as ids
ON p.ID = ids.ParsedValue
Run Code Online (Sandbox Code Playgroud)

这取决于您使用的SQL Server版本吗?如果是这样哪些受影响?

Fra*_*k V 5

是的,假设数据集相对较大.

EXISTS用于大型数据集更好.我遵循这一点,并注意到我的代码执行时间的改进.

根据这篇文章,它INEXISTS内部化的关系有关.另一篇文章:http://weblogs.sqlteam.com/mladenp/archive/2007/05/18/60210.aspx

  • 存在使用JOIN运算符,其中IN使用OR运算符. (2认同)