我知道我找不到合適的標題。PostgreSQL - 檢查反向值行的存在的最佳方法
爲了論證的緣故,我有這個表:
sender|receiver
a | b
c | d
d | e
b | a
f | q
q | f
t | u
我想計算出有表的一個反向的行數。例如,行a | b在表格中與b | a相反。同樣,f | q在表格中與q | f相反。所以,對於這張桌子,我想要「2」作爲答案。
我計算這個爲:
CREATE TABLE #temptab
(
sender VARCHAR,
receiver VARCHAR
);
CREATE TABLE #temptab2
(
receiver VARCHAR,
sender VARCHAR
);
INSERT INTO #temptab
(
sender,
receiver
)
SELECT DISTINCT sender,
receiver
FROM table
INSERT INTO #temptab2
(
receiver,
sender
)
SELECT DISTINCT receiver,
sender
FROM table
SELECT COUNT(sender)
FROM (SELECT sender,receiver FROM #temptab INTERSECT SELECT receiver,sender FROM #temptab2
有沒有一種方法,我可以更快地做到這一點?
非常感謝。第一個將查詢時間從1分鐘縮短到〜35秒。 –