私は適切なタイトルを見つけることができませんでした。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秒に短縮しました。 –