ホームページ > データベース > mysql チュートリアル > 重複テーブル検索には複数の JOIN 句と ON 句の OR 条件のどちらが適していますか?

重複テーブル検索には複数の JOIN 句と ON 句の OR 条件のどちらが適していますか?

Patricia Arquette
リリース: 2025-01-07 07:24:41
オリジナル
593 人が閲覧しました

Which is Better: Multiple JOIN Clauses or an OR Condition in the ON Clause for Duplicate Table Lookups?

重複ルックアップに対するテーブル結合の最適化

同じテーブルを 2 回結合する場合、通常、複数の JOIN 句を使用するか、JOIN 句を組み込むという 2 つのアプローチがあります。 ON 句の OR 条件。

複数の JOIN 句(方法 1):

例で示したように、この方法には、一致する条件ごとに個別の JOIN を作成することが含まれます:

SELECT t1.PhoneNumber1, t1.PhoneNumber2, 
   t2.SomeOtherFieldForPhone1, t3.someOtherFieldForPhone2
FROM Table1 t1
INNER JOIN Table2 t2
   ON t2.PhoneNumber = t1.PhoneNumber1
INNER JOIN Table2 t3
   ON t3.PhoneNumber = t1.PhoneNumber2
ログイン後にコピー

このアプローチは簡単で、結果がデータには必要な列がすべて含まれています。

ON 句の OR 条件 (メソッド2):

このメソッドは、JOIN 条件を 1 つに結合することでクエリを簡素化しようとします:

SELECT ...
FROM Table1
INNER JOIN Table2 
   ON Table1.PhoneNumber1 = Table2.PhoneNumber OR
      Table1.PhoneNumber2 = Table2.PhoneNumber
ログイン後にコピー

ただし、このアプローチでは、次の場合に結果セットに行が重複する可能性があります。指定された行に対して両方の一致条件が満たされています。

最良実践:

推奨される方法は、複数の JOIN 句を使用した 方法 1 です。これにより、データの重複を回避しながら、特定の基準に基づいてテーブルを結合する、より明示的かつ信頼性の高い方法が提供されます。

冗長結合の回避:

次の方法で冗長結合を回避することが重要です。適切な別名と命名規則を使用します。たとえば、次のクエリを簡素化できます:

SELECT t.PhoneNumber1, t.PhoneNumber2, 
   t1.SomeOtherFieldForPhone1, t1.someOtherFieldForPhone1
FROM Table1 t
JOIN Table2 t1 ON t1.PhoneNumber = t.PhoneNumber1
JOIN Table2 t2 ON t2.PhoneNumber = t.PhoneNumber2
ログイン後にコピー

結合テーブル (t1 と t2 など) にエイリアスを付けることで、冗長性を減らし、クエリを読みやすくすることができます。

以上が重複テーブル検索には複数の JOIN 句と ON 句の OR 条件のどちらが適していますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート