私は3つのテーブルを持っています:
A_details
B_details
C_details
どちらがより効率的でしょうか: 3 つの選択クエリ、または結合を含む 1 つのクエリでしょうか?
私は3つのテーブルを持っています:
A_details
B_details
C_details
どちらがより効率的でしょうか: 3 つの選択クエリ、または結合を含む 1 つのクエリでしょうか?
これは、スキーマと、テーブルに正しいインデックスがあるかどうかに大きく依存します。
私は通常、コードで実行しようとするのではなく、データベースに結合させることを好みます。データベースはこれに優れています。
ここで重要なのは、結合が効率的に読み取るための正しいインデックスがあるかどうかです。
データベースのインデックスを見てください
データベースによって異なりますが、意味がない場合は JOIN を作成しないでください。データベースまたはプラットフォームが指定されていません。プラットフォームでクエリごとに複数の結果セットが許可されている場合は、3 つの SELECT を一度に発行するだけで、1 つのデータベース リクエストで 3 つのテーブルを取得できます。
プラットフォームがサポートしていない場合は、データベースに 3 回アクセスし、これがパフォーマンスの問題であることが確実でない限り、クエリを結合しようとしないでください。
正規化の方が優れたアプローチであるため、テーブルの結合はより効率的です。
ここでは、テーブル間の共通の列で結合された 3 つのテーブルに対して左外部結合を使用しています。したがって、列を col1、col2、col3... に置き換えて、テーブルに適したものに置き換え、以下のクエリを参照してください。
select a.*, b.*, c.*
from A_details a
left outer join B_details b on a.col1=b.col2
left outer join C_details c on a.col1=b.col3
詳細については、 http ://www.w3schools.com/sql/sql_join.asp を参照してください。