MySQL はハッシュ インデックスと Btree インデックスをサポートしています。 InnoDB と MyISAM は Btree インデックスのみをサポートしますが、Memory および Heap ストレージ エンジンはハッシュ インデックスと Btree インデックスの両方をサポートできます。 次のステートメントを使用して、現在のインデックスの使用状況を照会できます。 '%Handler_read%' のようなステータスを表示します。 +-----------------------+-------+ | 変数名 | 値 | +-----------------------+-------+ | ハンドラー_read_first | 0 | | ハンドラー読み取りキー | 0 | | ハンドラー_read_last | 0 | | ハンドラー_read_next | 0 | | ハンドラー_read_prev | 0 | | ハンドラー読み取り回数 | 0 | | ハンドラー_read_rnd_next | 0 | +-----------------------+-------+ インデックスが機能している場合、Handler_read_key の値は高くなります。この値は、インデックス値によって行が読み取られる回数を表します。値が低い場合、テーブル名にインデックスを追加することでのパフォーマンスの向上は高くないため、インデックスはあまり使用されません。 Handler_read_rnd_next の値が高い場合、クエリが非効率的に実行されていることを意味し、状況を改善するためにインデックスを作成する必要があります。この値は、データ ファイルの次の行を読み取る要求の数を意味します。大量のテーブルスキャンが行われている場合、Handler_read_rnd_next は高くなります。これは、インデックスが正しくないか、使用されていないことを示します。 最適化: 挿入ステートメントを最適化します。 1. テスト値()、()、()、() に挿入してみます。 2. 異なる顧客から複数の行を挿入する場合、INSERT 遅延ステートメントを使用すると、速度を上げることができます。遅延とは、INSERT ステートメントがすぐに実行されることを意味します。実際には、データはメモリ キューに配置され、実際にはディスクに書き込まれません。これは、各ステートメントを個別に挿入するよりもはるかに高速です。Low_priority は正反対です。挿入は、他のすべてのユーザーがテーブルの読み取りと書き込みを終了した後に実行されます。 3. インデックスファイルとデータファイルを別のディスクに保存する(テーブル作成ステートメントを使用) 4. バッチ挿入を実行している場合は、bulk_insert_buffer_size 変数値を増やして速度を上げることができますが、これは MyISAM テーブルの場合のみです。 5. テキストファイルからテーブルをロードする場合は、データファイルのロードを使用します。これは通常、挿入を使用するよりも20倍高速です。 group by ステートメントを最適化します。 デフォルトでは、MySQL はすべての group by フィールドをソートします。これは order by に似ています。クエリに group by が含まれているが、ユーザーが並べ替えられた結果の使用を避けたい場合は、order by null を指定して並べ替えを抑制できます。 order by ステートメントを最適化します。 場合によっては、MySQL はインデックスを使用して ORDER BY 句を満たすことができるため、追加のソートが不要になります。 where 条件と order by は同じインデックスを使用し、order by 順序はインデックス順序と同じで、order by フィールドは昇順または降順になります。 ネストされたクエリの最適化: MySQL 4.1 ではサブクエリのサポートが開始されましたが、場合によっては、特に結合するパッシブ テーブルにインデックスがある場合、サブクエリをより効率的な結合に置き換えることができます。その理由は、MySQL では、論理的に 2 つの手順を必要とするこのクエリを完了するために、メモリ内に一時テーブルを作成する必要がないためです。 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
>>: docker CMD/ENTRYPOINT が sh スクリプトを実行する問題の解決策: not found/run.sh:
SQL を最適化する必要があるのはなぜですか?当然ですが、SQL ステートメントを記述する場合、次の...
以下のように表示されます。 XML/HTML コードコンテンツをクリップボードにコピー<!DO...
この記事では、CSS を理解し始めたばかりの人を対象に、主に HTML で clearfix と c...
目次1. 環境整備2. イメージを実行する問題を解決するRedis のインストールNginx のイン...
Windowsオペレーティングシステムでは、ポートの占有状況を照会し、ポートの占有状況をクリアするプ...
1.docker search mysql查看mysql版本 2. docker pull mysq...
目次MySQL インデックス最適化ページングの調査ケース1ケース2 MySQL インデックス最適化ペ...
目次コンポーネントインフラストラクチャ目的: 画像拡大鏡機能を実現するvueuseをインストールする...
みなさんこんにちは。私は技術の話ばかりして髪を切らない先生のトニーです。何らかの歴史的な理由や誤操作...
概要: MYSQLの問題解決記録:どのようなインストール方法 (rpm、gz、gz.xz) を使用す...
SVN は Subversion の略称で、ブランチ管理システムを使用して効率的に管理するオープンソ...
結果: 実装コード: スワイパーコンポーネントと一緒に使用する必要がありますSwiper 基本デモア...
1. 問題開発中に、他のデータベースから MySQL データベース テーブルにデータを挿入すると、次...
lsof (開いているファイルのリスト) は、プロセスによって開かれたファイルを表示するツールです。...
インターネット上には、expect を使用して自動ログインを実現するスクリプトが多数存在しますが、明...