ホームページ > データベース > mysql チュートリアル > SQL LEFT JOIN と FROM 句内の複数のテーブル: どちらが優れていますか?

SQL LEFT JOIN と FROM 句内の複数のテーブル: どちらが優れていますか?

Barbara Streisand
リリース: 2025-01-20 11:22:09
オリジナル
566 人が閲覧しました

SQL LEFT JOIN vs. Multiple Tables in FROM Clause: Which is Better?

SQL JOIN 構文: FROM 句の LEFT JOIN および複数テーブル結合

内部 SQL 結合を実行する場合、2 つのオプションがあります。FROM 句でテーブルをリストし、WHERE 句で結合条件を指定する古い構文と、FROM 句で直接使用する新しい構文です。左結合。どちらの構文でも同じ結果が得られますが、新しい構文を使用することが望ましい理由は数多くあります。

古い構文のあいまいさ

古い構文は、INNER JOIN と OUTER JOIN を組み合わせたクエリではあいまいでした。クエリ オプティマイザーの戦略に応じて、結合が実行される順序が結果に影響します。たとえば、LEFT JOIN の後に INNER JOIN を実行すると、内部結合基準を満たさない一致する行が除外される場合がありますが、逆の順序では一致しない行が含まれる可能性があります。

明確さと明示性

LEFT JOIN を使用した新しい構文により、明確さと曖昧さがなくなりました。テーブル間の論理関係を指定し、クエリ オプティマイザーが結合を効率的に処理できるようにします。 LEFT JOIN 句は、結合条件を行フィルター条件から分離することにより、他のテーブルに一致する行が存在するかどうかに関係なく、左側のテーブルのすべての行が確実に含まれるようにします。

パフォーマンスの改善

FROM 句で LEFT JOIN を使用すると、クエリ オプティマイザーは行フィルターとは独立して結合操作を最適化できます。これにより、中間結合結果の数が減り、結合実行に対する WHERE 句のフィルタリングの影響が最小限に抑えられるため、パフォーマンスが向上します。

一貫性と標準化

新しい構文は、さまざまなデータベース ベンダー間でより一貫性があります。特に Microsoft SQL Server では、古い外部結合構文は非推奨になりましたが、内部結合構文は非推奨になりました。これは、データベース間のクエリの互換性と移植性を確保するのに役立ちます。

会社、部門、従業員という 3 つのテーブルがあり、それらの間に階層関係があるとします。すべての会社、部門、従業員を取得し、少なくとも 1 人の従業員がいる部門をフィルターするには、次のクエリを使用できます:

<code class="language-sql">SELECT *
FROM Company
LEFT JOIN (
    Department INNER JOIN Employee ON Department.ID = Employee.DepartmentID
) ON Company.ID = Department.CompanyID</code>
ログイン後にコピー

このクエリは、Company と内部結合されたDepartment テーブルおよび Employee テーブルとの間の LEFT JOIN を指定します。これにより、部門や従業員が存在するかどうかに関係なく、すべての企業が含まれることが保証されます。一致しない部門または従業員の行には、対応する列に NULL 値が含まれます。

結論

SQL の内部結合の古い構文と新しい構文はどちらも同じ結果を生成できますが、FROM 句で LEFT JOIN を使用することをお勧めします。これにより、明確さ、曖昧さのなさ、パフォーマンスの向上、データベース ベンダー間での一貫性、および結合条件と行フィルタリング条件の指定における柔軟性が向上します。

以上がSQL LEFT JOIN と FROM 句内の複数のテーブル: どちらが優れていますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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