Postgresqlでそのようなクエリを実行する方法を知っている人はいますか?
SELECT *
FROM tabA
WHERE NOT EXISTS (
SELECT *
FROM tabB
WHERE tabB.id = tabA.id
)
このようなクエリを実行すると、postgresql は " ERROR: Greenplum Database does not yet support that query
."と文句を言います。
編集:そして、これはどうですか:
SELECT *
FROM tabA
WHERE NOT EXISTS (
SELECT *
FROM tabB WHERE tabB.id = tabA.id AND tabB.id2 = tabA.id2
)
編集:
@ypercube から提供された 4 つの回答について、postgresql 8.2.15 でテストしました。結論は次のとおりです
。1)上記の質問で述べたように、このバージョンのpostgresqlでは最初のものは機能しません。エラーメッセージもそこにあります。
2) 他の 3 つの回答の実行速度は、(3)LEFT JOIN > (4)EXCEPT >> (2)NOT IN です。
具体的には、同じ構文のクエリの場合、(3)LEFT JOIN は約 5580 ミリ秒、(4)EXCEPT は約 13502 ミリ秒、(2)NOT IN は 100000 ミリ秒以上かかります (実際、私は util が終了するのを待ちませんでした)。
NOT IN 句が非常に遅い特定の理由はありますか?
チェン