必要なデータが 2 つのテーブルのうちの 1 つである 3 つのテーブルを結合する際に問題が発生していますが、両方ではありません。
たとえば、「id」、「city」、「state」列を持つ「customers」テーブルと、「id」列と必要なデータを持つ 2 つのデータ テーブル data_a と data_b があるとします。
今、私は以下のような声明を持っています。
SELECT cust.id, cust.city, cust.state, a.info as infoa, b.info as infob
FROM customers cust
INNER JOIN data_a a
ON cust.id = a.id
INNER JOIN data_b b
ON cust.id = b.id
WHERE cust.city = 'mytown';
これは実行に永遠に時間がかかり、終了する前に終了するため(実際に終了する場合)、クエリからの応答はありません。
2 番目のデータ テーブルを削除すると、ステートメントは正常に機能しますが、追加した場合にのみ問題が発生します。すべての id 列にインデックスが付けられ、city 列も同様です。
それとも、一時テーブルを作成して2つの結合を行い、それらを一時テーブルに挿入して一時テーブルから読み取るほうがよいですか?
編集:タイプミスを修正
左結合を行うと、おそらく無期限にクエリが実行されます。内部結合を使用すると、空のセットが取得されます。