ホームページ >データベース >mysql チュートリアル >PostgreSQL の LATERAL JOIN とサブクエリ: いつどちらを使用する必要がありますか?
PostgreSQL の LATERAL JOIN とサブクエリ: いつどちらを使用するか?
背景
PostgreSQL での LATERAL JOIN の登場により、非効率なサブクエリを伴う複雑なデータ ダンプ問題に対する潜在的な解決策が提供されます。この記事は、LATERAL JOIN とサブクエリの使用例と違いを調査することで、状況を明確にすることを目的としています。
LATERAL JOIN とは何ですか?
PostgreSQL 9.3 で導入されたLATERAL JOIN を使用すると、サブクエリまたはテーブル関数を FROM 句に含めることができ、以前の FROM エントリの列を参照できるようになります。一度だけ実行される通常のサブクエリとは異なり、LATERAL JOIN は相関サブクエリと同様に、左結合の各行の右側の式を評価します。
と相関サブクエリ
LATERAL JOIN は相関サブクエリに似ていますが、いくつかの重要な違いがあります。 LATERAL JOIN は複数の列と行を返すことができるのに対し、相関サブクエリは通常 1 つの値に制限されることに注意してください。さらに、LATERAL JOIN 構文では、相関サブクエリに相当するのは LEFT JOIN LATERAL ... ON true です。
サブクエリ機能を超えた
LATERAL JOIN は、サブクエリでは実現が難しい機能を提供します。たとえば、テーブル関数を使用したり、複数の FROM エントリを相互参照したり、複数の行から複数の列を返したりすることができます。また、コレクションを返す関数を利用して、より効率的な操作を行うこともできます。
リスト内のコレクション関数を返す SELECT
unnest() のようなコレクションを返す関数は、SELECT リストで直接使用できます。以前は問題がありましたが、PostgreSQL 10 以降は最適化されており、複数の行または列を返すための LATERAL JOIN の代替手段が提供されています。ただし、この場合、LATERAL JOIN とは異なり、結果に行がないと行全体が削除されることに注意することが重要です。
以上がPostgreSQL の LATERAL JOIN とサブクエリ: いつどちらを使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。