概要 リレーショナル データベースでは、インデックスは、データベース テーブル内の 1 つ以上の列の値を並べ替える、独立した物理的なストレージ構造です。これは、テーブル内の 1 つ以上の列の値のコレクションと、これらの値を物理的に識別するテーブル内のデータ ページへの対応する論理ポインターのリストです。 MySQL はハッシュ インデックスと Btree インデックスをサポートしています。 InnoDB と MyISAM は Btree インデックスのみをサポートしますが、Memory および Heap ストレージ エンジンはハッシュ インデックスと Btree インデックスの両方をサポートできます。 1. 現在のインデックスの使用状況を表示する 次のステートメントを使用して、現在のインデックスの使用状況を照会できます。
実際、多くのアプリケーション シナリオでは、インデックスが動作しているとき、Handler_read_key の値は非常に高くなります。この値は、行がインデックス値を読み取る回数を表します。値が非常に低い場合、インデックスが頻繁に使用されないため、インデックスを追加することで得られるパフォーマンスの向上は大きくないことを示します。 Handler_read_rnd_next の値が高い場合、クエリが非効率的に実行されており、インデックス作成によって修正する必要があることを意味します。この値は、データ ファイル内の次の行を読み取る要求の数を意味します。大量のテーブル スキャンが実行されている場合、Handler_read_rnd_next の値が高いことは通常、テーブルが正しくインデックス付けされていないか、書き込まれたクエリがインデックスを活用していないことを示します。 2. インデックスが使用されているかどうかを確認する 選択 オブジェクトタイプ、 オブジェクトスキーマ、 オブジェクト名、 インデックス名、 カウントスター、 カウント_読み取り、 COUNT_FETCH から PERFORMANCE_SCHEMA.table_io_waits_summary_by_index_usage; 読み取りとフェッチの数が両方とも 0 の場合は、使用されていないことを意味します。 3. 使用されているインデックスを確認する 関連するSQLを説明し、クエリでどのインデックスタイプが使用されているかを確認します。 +-----+-------+-------+-------+--------+--------+--------+-------+ | ALL | インデックス | 範囲 | ref | eq_ref | const | システム | NULL | +-----+-------+-------+-------+--------+--------+--------+-------+ 最高から最低の順に次のとおりです。 システム > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL
ちなみに、最適化のポイントをいくつか挙げます。 1. 挿入ステートメントを最適化します。
2. group by ステートメントを最適化します。 デフォルトでは、MySQL はすべての group by フィールドをソートします。これは order by に似ています。クエリに group by が含まれているが、ユーザーが並べ替えられた結果の使用を避けたい場合は、order by null を指定して並べ替えを抑制できます。 3. order by ステートメントを最適化します。 場合によっては、MySQL はインデックスを使用して ORDER BY 句を満たすことができるため、追加のソートが不要になります。 where 条件と order by は同じインデックスを使用し、order by 順序はインデックス順序と同じで、order by フィールドは昇順または降順になります。 4. ネストされたクエリを最適化する: MySQL 4.1 ではサブクエリのサポートが開始されましたが、場合によっては、特に結合するパッシブ テーブルにインデックスがある場合、サブクエリをより効率的な結合に置き換えることができます。その理由は、MySQL では、論理的に 2 つの手順を必要とするこのクエリを完了するために、メモリ内に一時テーブルを作成する必要がないためです。 最後に、ポイント: テーブルには最大 16 個のインデックスを設定でき、インデックスの最大長は 256 バイトです。インデックス作成の時間オーバーヘッドは O(1) または O(logN) であるため、インデックスは一般に挿入パフォーマンスに大きな影響を与えません (大量の小さなデータを除く)。ただし、インデックスが多すぎるのも良くありません。結局のところ、更新などの操作ではインデックスの維持が必要になります。 要約する 以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。 以下もご興味があるかもしれません:
|
<<: Vite2+Vue3を使用してMarkdownドキュメントをレンダリングする練習
コードをコピーコードは次のとおりです。 <HTML> <ヘッド> <T...
WindowsにTomCatをインストールするこの記事では、WindowsプラットフォームにTomC...
コマンド パターンは、JavaScript デザイン パターンにおける動作デザイン パターンです。定...
目次概要例1) オブジェクトをフリーズする2) 配列をフリーズする3) 浅い凍結4) ディープフリー...
前提条件: データベースを復元するために必要な .frm ファイルと .ibd ファイルを保存します...
このチュートリアルの動作環境: Windows 7 システム、vue 2.9.6 バージョン、DEL...
目次序文 👀リサーチを始めましょう🐱🏍オリジナル🧶 indexOf を使用した元の方法の最適化 ✍...
今週は戦争のように忙しかったです。他人に操られているような気がします。毎日朝早く出勤して夜遅く帰り、...
この記事では、Vueを使用して天気コンポーネントをロードする方法を参考までに紹介します。具体的な内容...
時間に余裕を持って、過去を忘れましょう。前のセクションでは、[検索] フォームとクエリおよびリセット...
コンセプトMMM (Mysql のマスター マスター レプリケーション マネージャー) は、Perl...
1. 要約:一般的に、次のカテゴリに分類できます。 Docker 環境情報 — docker [i...
IDEA 2020 で Tomcat を構成する手順は次のとおりです。最初のステップはTomcatを...
まず、行の高さが要素の高さと等しい場合にテキストが垂直方向に中央揃えにならない理由を説明します。実際...
年、月、週、日グループによる MySQL クエリ1. 学年別検索 SELECT DATE_FORMA...