序文日常業務では、実行に時間のかかる SQL ステートメントを記録するために、スロー クエリを実行することがあります。これらの SQL ステートメントを見つけても、作業が完了したわけではありません。SQL ステートメントがインデックスを使用しているかどうか、および完全なテーブル スキャンが実行されているかどうかを確認するために、explain コマンドを使用してこれらの SQL ステートメントの実行プランを表示することがよくあります。これは、explain コマンドで表示できます。したがって、MySQL のコストベースのオプティマイザについて深く理解でき、また、オプティマイザが考慮する可能性のあるアクセス戦略や、SQL ステートメントを実行するときにオプティマイザが採用すると予想される戦略に関する多くの詳細も取得できます。 (QEP: sql は実行プラン クエリ実行プランを生成します) mysql> explain select * from servers; +----+-------------+---------+-------+---------------+-------+-------+------+------+ | id | select_type | テーブル | タイプ | possible_keys | key | key_len | ref | 行 | 追加 | +----+-------------+---------+-------+---------------+-------+-------+------+------+ | 1 | SIMPLE | サーバー | すべて | NULL | NULL | NULL | NULL | 1 | NULL | +----+-------------+---------+-------+---------------+-------+-------+------+------+ セット内の1行(0.03秒) 1. EXPLAINの紹介EXPLAIN キーワードを使用すると、オプティマイザーをシミュレートして SQL クエリ ステートメントを実行し、MySQL が SQL ステートメントをどのように処理するかを知ることができます。クエリ ステートメントまたはテーブル構造のパフォーマンスのボトルネックを分析します。 explain を通じて、次の情報を取得できます。
使用法: explain + sql ステートメント。 含まれるフィールドは次のとおりです 2. 実行計画の各フィールドの意味2.1 id IDは同じで、実行順序は上から下です idが異なります。サブクエリの場合はid番号が増加します。id値が大きいほど優先度が高くなり、早く実行されます。 同じ ID または異なる ID が同時に存在する場合、同じ ID はグループとみなされます。実行は同じグループ内で上から下へ行われ、最も大きい ID を持つグループが最初に実行されます。 2.4型 Type は、クエリで使用されるタイプを示します。type に含まれるタイプは次のとおりです。 システム > const > eq_ref > ref > 範囲 > インデックス > すべて
2.5 possible_keys と key possible_keys は、このテーブルに適用できる可能性のあるインデックス(1 つ以上)を示します。クエリに関係するフィールドにインデックスが存在する場合、そのインデックスはリストされますが、クエリによって実際に使用されない可能性があります。 キーによって実際に使用されるインデックス。NULL の場合、インデックスは使用されません。 (考えられる理由としては、インデックスがない、またはインデックスに障害があるなど) 2.6 キーの長さ インデックスで使用されるバイト数を示します。この列は、クエリで使用されるインデックスの長さを計算するために使用できます。長さが短いほど、精度が損なわれずに済みます。 2.7行 テーブルの統計とインデックスの選択に基づいて、必要なレコードを見つけるために必要な行数を大まかに見積もります。つまり、行数が少ないほど良いということです。 2.8 追加 2.8.1 ファイルソートの使用 これは、MySQL がテーブル内のインデックスの順序でデータを読み取るのではなく、外部インデックスを使用してデータを並べ替えることを意味します。インデックスを使用して実行できない MySQL でのソート操作は、「ファイル ソート」と呼ばれます。 2.8.2 一時的使用 一時テーブルは中間結果を保存するために使用されます。MySQL はクエリ結果をソートするときに一時テーブルを使用します。一般的に、並べ替えやグループ化クエリで使用されます。 2.8.3 インデックスの使用 対応する選択操作でカバー インデックスが使用され、テーブルのデータ行へのアクセスが回避されることを示します。これは効率的です。 where の使用が同時に出現する場合は、インデックスがインデックス キー値の検索を実行するために使用されることを意味します。where の使用が同時に出現しない場合は、インデックスが検索を実行するのではなく、データを読み取るために使用されることを意味します。 2.8.4 結合バッファの使用 接続キャッシュが使用されていることを示します。たとえば、クエリを実行すると、複数テーブルの結合の数が非常に多くなるため、構成ファイルで結合バッファを増やします。 要約するMySQL explain の使用法と結果の詳細な分析に関するこの記事はこれで終わりです。MySQL explain の使用法と結果に関するより関連性の高いコンテンツについては、123WORDPRESS.COM で以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
>>: Docker で Springboot プロジェクトを実行する実装
CentOS 8 がリリースされてから随分経ちました。Linux 仮想マシンをいじっている人間として...
導入パート1: 冒頭に書いたOneProxy は、民間ソフトウェアによって完全に独立して開発された分...
% ワイルドカードを使用すると、インデックス失敗の問題が発生することがよくあります。ここでは、lik...
導入Ubuntu のデフォルトのソースは国内サーバーではないため、更新されたソフトウェアのダウンロー...
システムとユーザー環境の設計<br />Apple システムの成功は、そのシステム アー...
この記事では、タブ切り替え効果を実現するためのJavaScriptの具体的なコードを参考までに紹介し...
目次MySQL の 4 つの分離レベルデータ テーブルを作成します。分離レベルの設定物事の分離レベル...
この記事は主に、以前のインストール方法を使用して MySQL 5.7.14 をインストールするときに...
著者は最近、仕事でパフォーマンスのボトルネックの問題に遭遇しました。MySQL テーブルには毎日約 ...
1. 分析的思考1. 機械自身の理由を排除する2. サーバーパフォーマンス分析3. プロジェクト自体...
スクロールバーのデフォルトスタイルを変更する必要があるプロジェクトを多数作成しましたが、プラグインを...
CSS3 アニメーションで実現したシンプルでクールな効果。最終的な効果は次のようになります。 ページ...
vue は、ページ上の div ボックスのドラッグ アンド ドロップ ソート機能を実装します。 序文...
序文この記事は主にMySQLの主キー0と主キー自己排除制約の関係を紹介し、皆さんの参考と学習のために...
目次1. 左端接頭辞原則2. 表に戻る3. インデックスプッシュダウン序文:インデックス プッシュダ...