MySQL の原則の概要: 左結合、右結合、内部結合、およびハッシュ結合
この記事は、mysql に関する関連知識を提供します。主に、左結合、右結合、内部結合、およびハッシュ結合の動作原理を紹介し、サブクエリと結合の違いを分析します。学んだことを踏まえて、仕事で身につけるべきスキルを一緒に見ていきましょう。
1. MySQL データベースの JOIN 接続
複数のテーブルにインデックスを作成したり、複数のテーブルの JOIN ステートメントやサブクエリ ステートメントを作成したりするのは比較的困難です。多くの開発者は、JOIN が SQL のパフォーマンス効率を低下させると無意識に信じているため、開発者は JOIN 実装プロセスを理解していないため、これが SQL 実行の効率に影響を与えると考え、複数テーブルの SQL を単一テーブルのクエリに分割します。 テーブル R と S が接続されていると仮定すると、結合間のテーブルの関連付けでは、照合にインデックスを使用します。 テーブル R は駆動テーブルと呼ばれ、テーブル R の WHERE 条件でフィルタリングされたデータは、テーブル S に対応するインデックスに対して 1 つずつクエリされます。テーブル R を駆動するデータの量が大きくない場合、上記のアルゴリズムは非常に効果的です。 次の 3 つの JOIN タイプの場合、どのテーブルが駆動テーブルであるか:SELECT * FROM R LEFT JOIN S ON R.x = S.x WEHRE ... SELECT * FROM R RIGHT JOIN S ON R.x = S.x WEHRE ... SELECT * FROM R INNER JOIN S ON R.x = S.x WEHRE ...
1、内部結合
INNER JOIN の場合、駆動テーブルはテーブル R またはテーブル S になります。左側と右側で共有するデータを表示します。 このシナリオでは、より少量のデータをクエリする必要がある人がテーブルを操作します。次の例を見てみましょうSELECT * FROM R INNER JOIN S ON R.x = S.x WHERE R.y = ? AND S.z = ?
2, LEFT JOIN
上記の左結合の場合、駆動テーブルは左側のテーブル R です。 Right Join の場合、ドライバー テーブルは右テーブル S です。これは、左側のテーブルと右側のテーブルのどちらのデータをクエリする必要があるかを決定する JOIN タイプです。 左側のテーブルのすべてのレコードと、右側のテーブルの等しい結合フィールドを持つレコードを返します。右のテーブルに一致する行がない場合でも、左のテーブルのすべての行を返します。SELECT * FROM R LEFT JOIN S ON R.x = S.x WHERE R.y = ? AND S.z = ?
3. 右結合
上記の左結合の場合、駆動テーブルは左テーブル R であり、右結合では、運転テーブルは右テーブルテーブルSです。これは、左側のテーブルと右側のテーブルのどちらのデータをクエリする必要があるかを決定する JOIN タイプです。 右側のテーブルのすべてのレコードと、左側のテーブルの結合フィールドに等しいレコードを返します。左側のテーブルに一致するものがない場合でも、右側のテーブルのすべての行を返します。SELECT * FROM R RIGHT JOIN S ON R.x = S.x WHERE R.y = ? AND S.z = ?
2. MySQL データベースのハッシュ結合
1. ハッシュ結合とは
MySQL 2 番目の JOIN はハッシュ JOIN で、2 つのテーブル間の結合条件にインデックスがない場合に使用されます。 接続がない場合、インデックスを作成しても問題ありませんか? 一部の列が選択性の低いインデックスである場合、データをインポートするインデックスを作成するときにデータを並べ替える必要があり、インポートのパフォーマンスに影響し、セカンダリ インデックスでテーブルを返すときに問題が発生します。フィルタリングされたデータの量が多い場合は、直接の全テーブル スキャンの方が高速になります。 OLAP ビジネス クエリの場合 (OLAP はオンライン分析処理、はデータ分析に使用されます。これにより、複数のデータベース システムからの情報を同時に分析できます) 、は、ギリシャ人のつながりは重要な機能です。 MySQL 8.0 はハッシュ結合アルゴリズムのサポートを開始し、OLAP ビジネスのサポートを強化します。
したがって、クエリするデータの量がそれほど大きくなく、クエリの応答時間が分レベルである必要がある場合は、MySQL 8.0 の単一インスタンスを使用して、次のクエリを完了できます。ビッグデータ。2. ハッシュ JOIN の仕組み
ハッシュ JOIN は、MySQL 8.0 の実行プランに表示されます。ハッシュ JOIN は、関連付けられた 2 つのテーブルをスキャンします。 、ドライブ テーブルのスキャン中にハッシュ テーブルが作成され、2 番目のテーブルがスキャンされると、関連付けられたレコードごとにハッシュ テーブルが検索されます。見つかった場合は、レコードが返されます。 ハッシュ結合選択ドライバー テーブルとネストされたループ結合アルゴリズムは、どちらも基本的に同じです。どちらの小さいテーブルもドライバー テーブルとして使用されます。ドライバー テーブルが大きく、作成されたハッシュ テーブルがメモリ サイズを超える場合、MySQL は結果を自動的にディスクにダンプします。3. サブクエリ
私を含め、かなりの数の開発学生が、従来の JOIN ステートメントの代わりにサブクエリを作成することを好むことがわかりました。 サブクエリのロジックは非常に明確です。 JOIN もニーズを満たすことができますが、LEFT JOIN は代数的な関係であり、サブクエリは人間の思考の観点から理解する傾向があるため、理解するのは簡単ではありません。 ただし、MySQL 8.0 では、オプティマイザが in サブクエリを JOIN 実行プランに自動的に最適化するため、パフォーマンスが大幅に向上します。 SQL の実行計画にのみ注目する必要があり、2 つの実行計画が同じであれば、パフォーマンスに違いはありません。MySQL 8.0 より前では、MySQL はサブクエリを完全には最適化しませんでした。したがって、サブクエリの実行計画にプロンプト DEPENDENT SUBQUERY が表示されます。これは、それが依存サブクエリであり、サブクエリが外部テーブルの関連付けに依存する必要があることを示しています。 DEPENDENT SUBQUERY は実行が非常に遅くなる可能性があり、ほとんどの場合、これを 2 つのテーブル間の結合に手動で変換する必要があります。
それではブロガーの紹介ですヒント皆さん、現在の MySQL 8.0 バージョンでサブクエリを作成できる場合は、サブクエリの最適化が完全に完了しているためです。
MySQL 8.0 バージョンより前の場合MySQL の場合、すべてのサブクエリの SQL 実行プランを表示する必要があります。 DEPENDENT SUBQUERY のヒントは最適化する必要があります。最適化しないと、ビジネスに重大なパフォーマンス影響を及ぼします。DEPENDENT SUBQUERY の最適化は、通常、テーブル結合の派生テーブルとして書き換えられます。
推奨学習: mysql ビデオ チュートリアル
以上がMySQL の原則の概要: 左結合、右結合、内部結合、およびハッシュ結合の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









MySQLは、オープンソースのリレーショナルデータベース管理システムです。 1)データベースとテーブルの作成:createdatabaseおよびcreateTableコマンドを使用します。 2)基本操作:挿入、更新、削除、選択。 3)高度な操作:参加、サブクエリ、トランザクション処理。 4)デバッグスキル:構文、データ型、およびアクセス許可を確認します。 5)最適化の提案:インデックスを使用し、選択*を避け、トランザクションを使用します。

次の手順でphpmyadminを開くことができます。1。ウェブサイトコントロールパネルにログインします。 2。phpmyadminアイコンを見つけてクリックします。 3。MySQL資格情報を入力します。 4.「ログイン」をクリックします。

MySQLはオープンソースのリレーショナルデータベース管理システムであり、主にデータを迅速かつ確実に保存および取得するために使用されます。その実用的な原則には、クライアントリクエスト、クエリ解像度、クエリの実行、返品結果が含まれます。使用法の例には、テーブルの作成、データの挿入とクエリ、および参加操作などの高度な機能が含まれます。一般的なエラーには、SQL構文、データ型、およびアクセス許可、および最適化の提案には、インデックスの使用、最適化されたクエリ、およびテーブルの分割が含まれます。

MySQLは、そのパフォーマンス、信頼性、使いやすさ、コミュニティサポートに選択されています。 1.MYSQLは、複数のデータ型と高度なクエリ操作をサポートし、効率的なデータストレージおよび検索機能を提供します。 2.クライアントサーバーアーキテクチャと複数のストレージエンジンを採用して、トランザクションとクエリの最適化をサポートします。 3.使いやすく、さまざまなオペレーティングシステムとプログラミング言語をサポートしています。 4.強力なコミュニティサポートを提供し、豊富なリソースとソリューションを提供します。

Redisは、単一のスレッドアーキテクチャを使用して、高性能、シンプルさ、一貫性を提供します。 I/Oマルチプレックス、イベントループ、ノンブロッキングI/O、共有メモリを使用して同時性を向上させますが、並行性の制限、単一の障害、および書き込み集約型のワークロードには適していません。

データベースとプログラミングにおけるMySQLの位置は非常に重要です。これは、さまざまなアプリケーションシナリオで広く使用されているオープンソースのリレーショナルデータベース管理システムです。 1)MySQLは、効率的なデータストレージ、組織、および検索機能を提供し、Web、モバイル、およびエンタープライズレベルのシステムをサポートします。 2)クライアントサーバーアーキテクチャを使用し、複数のストレージエンジンとインデックスの最適化をサポートします。 3)基本的な使用には、テーブルの作成とデータの挿入が含まれ、高度な使用法にはマルチテーブル結合と複雑なクエリが含まれます。 4)SQL構文エラーやパフォーマンスの問題などのよくある質問は、説明コマンドとスロークエリログを介してデバッグできます。 5)パフォーマンス最適化方法には、インデックスの合理的な使用、最適化されたクエリ、およびキャッシュの使用が含まれます。ベストプラクティスには、トランザクションと準備された星の使用が含まれます

MySQLとSQLは、開発者にとって不可欠なスキルです。 1.MYSQLはオープンソースのリレーショナルデータベース管理システムであり、SQLはデータベースの管理と操作に使用される標準言語です。 2.MYSQLは、効率的なデータストレージと検索機能を介して複数のストレージエンジンをサポートし、SQLは簡単なステートメントを通じて複雑なデータ操作を完了します。 3.使用の例には、条件によるフィルタリングやソートなどの基本的なクエリと高度なクエリが含まれます。 4.一般的なエラーには、SQLステートメントをチェックして説明コマンドを使用することで最適化できる構文エラーとパフォーマンスの問題が含まれます。 5.パフォーマンス最適化手法には、インデックスの使用、フルテーブルスキャンの回避、参加操作の最適化、コードの読み取り可能性の向上が含まれます。

SQLデータベースの構築には、DBMSの選択が必要です。 DBMSのインストール。データベースの作成。テーブルの作成;データの挿入;データの取得。データの更新。データの削除。ユーザーの管理。データベースのバックアップ。
