MySQL カウントを向上させる方法のまとめ

MySQL カウントを向上させる方法のまとめ

多くのプログラマーは MySQL に精通していると思います。多くの人が count の使い方と、最適なクエリ結果を取得する方法に苦労しています。今日は参考までに私の意見をいくつかお話ししたいと思います。

1. まずテーブルを作成し、後続のテスト手順を容易にするためのテストデータを準備しましょう

InnoDBエンジンテーブルを例に挙げる

テーブル作成ステートメントは次のとおりです。

テーブル test.test を作成します。

(

    VARCHAR(50) NOT NULLコメント 'ddfdf'、

    b VARCHAR(15) NOT NULLコメント 'fds',

    c VARCHAR(20) NOT NULL コメント 'asda',

    d VARCHAR(8) NOT NULL COMMENT 'ads',

    e longblob NOT NULL COMMENT 'asda'、

    f VARCHAR(2000) COMMENT 'ads'、

    g VARCHAR(8) NOT NULL コメント 'assd',

    h 日付 NULLでないコメント 'adsad',

    z VARCHAR(10) NOT NULL コメント 'adsd'

)

エンジン=InnoDB デフォルト文字セット=utf8;

2. MySQLにログインしてデータベースを変更する

以下に示すようにテーブル作成ステートメントを実行します。

3. 次に、テストデータを準備し、下の図に示すように、データがあるかどうかを確認します。

4. 次にテストを開始します

where条件がない場合

count(*) は count(field) よりも速いと考える人もいれば、count(field) は count(*) よりも速いと考える人もいます。

では、どちらが速いでしょうか? 試してみましょう。下の写真をご覧ください。

図の結果によると、count(field) の方が明らかに高速です。

5. where 条件がある場合はどうなるでしょうか? count(*) と count(field) のどちらが速いでしょうか?

実行効果は下の図をご覧ください

count(*) は高速ですが、データ サイズが小さすぎて明らかな結果が表示されない可能性があります。

6. もちろん、実行計画を表示して分析することもできます

次の図に示すように、実行されるSQLの前にdescまたはexplainを追加するだけです。

最後にまとめると、 1. where条件がない場合はcount(field)が推奨される 2. where条件がある場合はcount(*)が推奨される 最後にまとめると、 1. where条件がない場合はcount(field)が推奨される 2. where条件がある場合はcount(*)が推奨される

以下もご興味があるかもしれません:
  • 大規模な MySQL テーブルに対する count() の実装を最適化しました
  • MySQL の集計関数 count の使用法とパフォーマンスの最適化テクニック
  • MySQL の InnoDB におけるカウント最適化の問題の共有
  • MySQLのCOUNT(*)のパフォーマンスについてお話しましょう
  • MySQL の count 関数の正しい使い方の詳細な説明
  • MySQLの行数カウントに関する簡単な説明
  • MySQL でのフィルター条件なしのカウントの詳細な説明
  • MySQL における count(*)、count(1)、count(col) の違いのまとめ
  • 複数のテーブルでの MySQL カウント データ例の詳細な説明
  • MySQL COUNT関数の使用と最適化

<<:  電子署名を実装するWeChatミニプログラム

>>:  JavaScriptは検証コードと検証のランダム生成を実装します

推薦する

Nginx と GeoIP モジュールを使用して IP の地域情報を読み取る方法

LinuxにGeoIPをインストールする yum で nginx-module-geoip をインス...

ウィンドウ内のさまざまな距離/スクロール距離の正確な計算の概要

通常、プロジェクト開発では、マージン、位置、座標などを扱う必要があります。悲劇なのは、これらの概念が...

VMware15 の CentOS7 インストールの詳細なプロセスとよくある問題 (画像とテキスト)

1. インストールパッケージの準備VMware-player-15.0.4-12990004、非商...

HTMLのテーブルタグの基本学習チュートリアル

表ラベルの構成HTML 内の表は <table> タグで構成されており、ブラウザはタグを...

antd ツリーと親子コンポーネント間の値転送問題について (React のまとめ)

プロジェクト要件: 製品ツリー ノードをクリックすると、そのノードのすべての親ノードが取得され、表に...

Hadoop 2.Xの新機能、ごみ箱機能の説明

ごみ箱機能をオンにすると、削除されたファイルの元のデータをタイムアウトなしで復元できるため、誤って削...

パスワードログインなしのLinux構成スタンドアロンおよびフルディストリビューションの詳細なチュートリアル

目次1: 単一マシンのパスワードフリーログイン構成1. 仮想マシンのホスト名を設定する2. 仮想マシ...

Linux でジャンクファイルをエレガントに削除する方法

あなたも私と同じように、コンピューターのファイルを整然と整理し、不要なファイルを適宜削除するプログラ...

Windows サービス 2012 Alibaba Cloud サーバーで MySQL をビルドするときに msvcr100.dll ファイルが見つからないという問題を解決します

解決策1: msvcr100.dll ファイルをダウンロードし (インターネットからソース ファイル...

zk+kafka+storm クラスターの docker-compose デプロイメントの実装

クラスターの展開の概要172.22.12.20 172.22.12.21 172.22.12.22 ...

Mysql クラシック高レベル/コマンドライン操作 (クイック) (推奨)

サーバーとデータベースの構築方法を学ぶ必要があるため、最近は SQL 言語を独学で学び始めました。デ...

ElementUIはel-formフォームリセット機能ボタンを実装します

目次ビジネスシナリオ:効果のデモンストレーション:ビジネスシナリオ: el-form を使用する場合...

Prometheus を使用して、MySQL の自動増分主キーの残りの使用可能パーセンテージをカウントします。

最近、本番環境のデータベースがログデータを狂ったように書き込み、主キー値のオーバーフローを引き起こし...