以下は、B+ ツリーのデータ構造と実験結果からの推測に基づいた私の判断です。間違いがあればご指摘ください。 今日は、MySQL count() 操作の最適化を試しました。以下の説明は、MySQL 5.7 InnoDB ストレージ エンジンと x86 Windows オペレーティング システムに基づいています。 作成されたテーブルの構造は以下のとおりです(データ量は100万です)。 まず、MySQLのcount(*)、count(PK)、count(1)のうちどれが速いのかという疑問があります。 違いはありません! WHERE句を追加した後は、3つのクエリにかかる時間も同じなので、写真は掲載しません。 以前会社で働いていたとき、 これは InnoDB インデックスから始まります。InnoDB インデックスは B+Tree です。 主キー インデックスの場合: リーフ ノードにのみデータを格納し、キーは主キー、値はデータ全体です。 これにより、次の 2 つの情報が得られます。 したがって、count(*) 操作を最適化したい場合は、短い列を見つけて、その列のセカンダリ インデックスを作成する必要があります。 まずインデックスを作成します: クエリ時間が 3.35 秒から 0.26 秒に短縮され、クエリ速度が13 倍近く向上したことがわかります。 インデックスが ご覧のとおり、時間は 0.422 秒で、これも非常に高速ですが、それでも もっと大胆に、実験してみます。 タイムは1.172秒 テーブル test1 を変更し、インデックス (status,imdbid) を追加します。 補充してください! ! key_len が 6 であり、Extra の説明でインデックスが使用されていることがわかります。 インデックスが失敗した場合: 関数の使用や != 演算など、インデックスが無効になる状況は多数あります。詳細については、公式ドキュメントを参照してください。 MySQL について深く勉強したわけではなく、上記は B+ ツリーデータ構造に基づく私の判断と実験結果の推測に基づいています。間違いがあればご指摘ください。 これで、大規模な MySQL テーブルに対する count() の最適化された実装に関するこの記事は終了です。大規模な MySQL テーブルに対する count() の最適化に関する関連コンテンツの詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
>>: Web 開発チュートリアル クロスドメイン ソリューションの詳細な説明
int(1) の長さ 1 は、許可されたストレージ幅を表していないことはすでにご存知かもしれません...
Vue エコシステムには Vite と呼ばれる新しいビルド ツールがあり、Vue CLI よりも 1...
導入HibernateやMyBatisなどのORMフレームワークでは、部門に関連付けられたユーザーオ...
MySQL パスワードを 2 回忘れてしまいましたか?最初、私はアンインストールして再インストールす...
1. 依存パッケージをインストールする yum -y インストール gcc-c++ ncurses-...
この記事では、Vueを使用してショッピングカートの数量を変更する方法を紹介します。具体的な内容は次の...
次の Web デザイン プロジェクトはレスポンシブにする必要があると上司をようやく納得させることがで...
目次1. インストール2. カプセル化に問題はない3. ファイルを作成する4. アドレス設定をリクエ...
今日は Docker でのネットワーク設定を試し、後で忘れないようにプロセスを記録しました。 (シス...
この記事では、淘宝虫眼鏡効果を実現するためのJavaScriptの具体的なコードを参考までに紹介しま...
症状Centos7 ホストに crontab タスクを設定しましたが、時間が来るとメールを実行して「...
Vue プロジェクトの開発プロセスでは、ローカル デバッグの利便性のため、通常、vue.config...
Web 標準に準拠した Web ページの構築は、jb51.net が常に全員と議論しているトピックで...
目次1. イベントとは何ですか? 2. 「イベント」機能を有効にする1. 機能が有効になっているかど...
Bツリーインデックス異なるストレージ エンジンでは、異なるストレージ構造を使用する場合もあります。た...