【发布时间】:2011-09-28 22:56:20
【问题描述】:
有表 A 和表 B。我想在两列上连接这些表,但只针对表 A 的选定行。
查询场景:
SELECT B.*
FROM B
INNER JOIN (SELECT * FROM A WHERE A.COLUMN1 BETWEEN somevalue1 AND somevalue2) C
ON B.COLUMN2 = C.COLUMN2
AND B.COLUMN3 = C.COLUMN3
或
SELECT B.*
FROM B
INNER JOIN A
ON B.COLUMN2 = A.COLUMN2
AND B.COLUMN3 = A.COLUMN3
WHERE A.COLUMN1 BETWEEN somevalue1 AND somevalue2
表 A 和 B 都有数百万条记录。使用 WHERE 条件表 A 将只返回 1000 个结果,因此要执行的实际连接是从 B 中查找匹配的详细信息,仅匹配 A 的 1000 行。
查询:
哪一个应该更快? (我无权查看查询执行计划)
谢谢!
【问题讨论】:
-
如果您发布代码、XML 或数据示例,请在文本编辑器中突出显示这些行,然后单击编辑器上的“代码示例”按钮 (
{ })工具栏以很好地格式化和语法突出显示它!
标签: sql-server performance inner-join where subquery