我听说使用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版本吗?如果是这样哪些受影响?
EXISTS用于大型数据集更好.我遵循这一点,并注意到我的代码执行时间的改进.
根据这篇文章,它IN与EXISTS内部化的关系有关.另一篇文章:http://weblogs.sqlteam.com/mladenp/archive/2007/05/18/60210.aspx
| 归档时间: |
|
| 查看次数: |
8483 次 |
| 最近记录: |