以下两个 SQL 查询返回相同的结果:
SELECT * FROM Table1
WHERE Table1.Value1 = 'something' OR Table1.Value2 IN (SELECT Value2 FROM Table2)
SELECT * FROM Table1
LEFT JOIN Table2
ON Table1.Value2 = Table2.Value2
WHERE (Table1.Value1 = 'something' OR Table2.Value2 IS NOT NULL)
同样,这两个查询返回相同的结果:
SELECT * FROM Table1
WHERE Table1.Value1 = 'something' AND Table1.Value2 NOT IN (SELECT Value2 FROM Table2)
SELECT * FROM Table1
LEFT JOIN Table2
ON Table1.Value2 = Table2.Value2
WHERE Table1.Value1 = 'something' AND Table2.Value2 IS NULL
就个人而言,我发现使用“IN”或“NOT IN”的选项更容易阅读(特别是因为我的实际查询中已经有一堆连接)。但是,如果 Table2 中的值越来越多(目前只返回三个结果),这个查询会不会变得低效?或者查询优化器会在幕后把它找出来并把它变成一个连接吗?我正在使用 SQL Server 2012。