EXPLAIN は、MySQL がインデックスを使用して選択ステートメントを処理し、テーブルを結合する方法を示します。より適切なインデックスを選択し、より最適化されたクエリ ステートメントを記述するのに役立ちます。簡単に言えば、その機能はクエリのパフォーマンスを分析することです。 explain キーワードの使い方は非常に簡単で、select クエリ ステートメントの前に置くだけです。 MySQL がインデックスを使用するかどうかを確認するには、タイプを確認するだけです。 all の場合、このクエリ ステートメントはすべての行を走査し、インデックスを使用しないことを意味します。 たとえば、explain select * from company_info where cname like '%小%' と記述します。 select * from company_info where cname like '小%' の説明 次の 1) id 列の数字が大きいほど、先に実行されます。数字が同じ場合は、上から下に実行されます。id 列が null の場合、これは結果セットであり、クエリに使用する必要がないことを意味します。 2) 一般的な select_type 列には次のものがあります。
3) テーブル クエリ テーブル名が表示されます。クエリがエイリアスを使用する場合、エイリアスがここに表示されます。データ テーブルに対する操作が含まれない場合は、null として表示されます。山括弧で囲まれた <derived N> として表示される場合は、これが一時テーブルであることを意味します。その後ろの N は実行プランの ID であり、結果がこのクエリから取得されることを示します。山括弧で囲まれた <union M,N> の場合は、<derived N> と似ており、これも一時テーブルであり、この結果が ID M,N のユニオン クエリの結果セットから取得されたことを示します。 4) タイプ 最良から最悪まで: system、const、eq_ref、ref、fulltext、ref_or_null、unique_subquery、index_subquery、range、index_merge、index、ALL。all を除く他のすべてのタイプはインデックスを使用できます。index_merge を除く他のタイプは 1 つのインデックスのみを使用できます。
5)、可能なキー クエリで使用される可能性のあるすべてのインデックスがここにリストされます 6) キー 実際に使用されているインデックスを照会します。select_type が index_merge の場合、ここには 2 つ以上のインデックスが表示されることがあります。その他の select_types の場合、ここには 1 つのインデックスのみが表示されます。 7) キーの長さ クエリの処理に使用されるインデックスの長さ。単一列インデックスの場合は、インデックス全体の長さが含まれます。複数列インデックスの場合は、クエリですべての列が使用されない可能性があります。使用される列の具体的な数はここで計算されます。使用されない列はここでは計算されません。この列の値に注意し、複数列インデックスの合計長を計算して、すべての列が使用されているかどうかを確認します。 MySQL の ICP 機能で使用されるインデックスはカウントされないことに注意してください。また、key_len は where 条件で使用されるインデックスの長さのみを計算し、インデックスがソートやグループ化に使用されている場合でも、key_len では計算されません。 8) 参照 クエリが定数等値クエリの場合、ここに const が表示されます。結合クエリの場合、駆動テーブルの実行プランには、駆動テーブルの関連フィールドが表示されます。条件で式または関数が使用されている場合、または条件列に内部暗黙的な変換がある場合は、func として表示される場合があります。 9) 行 これは実行プラン内のスキャン行の推定数であり、正確な値ではありません。 10) 追加 この列には多くの情報を表示できます。数十種類ありますが、よく使われるものは次のとおりです。
これら以外にも、クエリデータ辞書ライブラリは多数存在し、実行プラン中に結果を取得できないプロンプトメッセージもいくつか見つかります。 11)、フィルタリング この列は、explain Extended が使用されている場合に表示されます。バージョン 5.7 以降ではこのフィールドがデフォルトで存在するため、explain Extended は不要になりました。このフィールドは、ストレージ エンジンによって返されたデータがサーバー レベルでフィルター処理された後に、クエリを満たすレコード数の比率を示します。これはパーセンテージであり、特定のレコード数ではないことに注意してください。 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: Web インタビュー: MVC と MVVM の違いと、Vue が MVVM に完全に準拠していない理由
>>: IDEA2020.1.2 Webプロジェクトの作成とTomcatの設定に関する詳細なチュートリアル
目次1. WeChatパブリックプラットフォームからWeChat開発者ツールをダウンロードする2. ...
クローラーの開発プロセス中に、クローラーを複数のサーバーに展開する必要がある状況に遭遇したことがある...
この記事では、例を使用して、MySQL でスケジュールされたタスクを設定する方法について説明します。...
概要:市販されているいくつかのタイムテーブルソフトウェアから教訓を得ました。機能が複雑すぎるため、タ...
背景現在、会社のプロジェクトは、フロントエンドとバックエンドが分離された方法で開発されています。新し...
日付型の違いと用途MySQL には、日付、時刻、年、日付時刻、タイムスタンプの 5 つの日付タイプが...
目次1. コマンド2. docker-compose.yml 3. Dockerファイル4. 直接変...
1. MySQLデータベースのユーザーテーブルのレコードのHostフィールド値を%に変更します。奇妙...
プロジェクトでよくある状況として、案件リストなどのリストが存在することがあります。リスト内の項目をク...
HTML 開発の歴史: HTML は英語で Hypertext Marked Language の...
<本文> <div id="ルート"> <フォー...
序文前回はLinearLayoutについて説明しました。今回はFrameLayoutの使い方を説明し...
Apache では構成ファイルで Web ページまたは Web サイトの書き換えを簡単に設定できる...
ダウンロードしたバージョンは、Zip 解凍版、Windows システムです。長い間 Windows ...
1. 現在のすべての接続の詳細情報を表示します。 ./mysqladmin -uadmin -p -...