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需要這麼長時間? –