1
我有一个查询匹配两个表之间的6个字段并返回匹配。该查询使用内部连接。我一直在测试INTERSECT来取代这个。因此,INTERSECT的结果的其他字段
SELECT Field1, Field2, Field3,...,Field6
FROM TableA
INTERSECT
SELECT Field1, Field2, Field3,...,Field6
FROM TableB
不过,我想TableA.ID和TableB.ID添加到结果并不能完全把它写在查询永远不会采取(相对于原来的查询)。有什么想法吗?
更新: 遗憾的是,当第一个问题是如何正确编写查询时,我添加了关于性能的评论。正如你所看到的,我认为主要的问题是我不能改进的非常糟糕和不正确的查询结构。我尝试:
SELECT a.ID, b.ID
FROM TableA a
INNER JOIN
(
SELECT Field1, Field2, Field3,...,Field6
FROM TableA
INTERSECT
SELECT Field1, Field2, Field3,...,Field6
FROM TableB
) Dupes ON
(
a.Field1 = Dupes.Field1 and
...
a.Field6 = Dupes.Field6
)
INNER JOIN TableB b
(
b.Field1 = Dupes.Field1 and
...
b.Field6 = Dupes.Field6
)
你对这两张桌子有什么样的索引?我猜ID是主键?执行计划在永久需要时显示什么? –
这些ID是主键,它们是当前表上唯一的索引。我可以告诉我当前的尝试是不正确的(返回的行太多),因此我首先查找正确的查询。我试图破译执行计划,但我不是那里的专家。 – user2178080
您能否显示您正在执行的确切的SQL需要这么长时间? –