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は検証コードと検証のランダム生成を実装します

推薦する

JavaScript のクロージャの問題の詳細な説明

クロージャは、純粋関数型プログラミング言語の伝統的な機能の 1 つです。クロージャをコア言語構造の不...

CentOS に PHP5 をインストール、PHP をアンインストール、PHP7 をインストールするチュートリアル

まず、PHP5をインストールするのはとても簡単ですyum install php PHP5 を使用し...

Linux の traceroute コマンドの使用方法の詳細な説明

Traceroute を使用すると、情報がコンピュータからインターネットの反対側のホストまでたどるパ...

MySQLテーブルのテーブル構造を素早く変更する方法

MySQL テーブルのテーブル構造をすばやく変更する - 「MySQL 管理」から抜粋 ALTER ...

Linuxの同時実行は簡単です。このようにするだけです

並行処理関数 i の `grep server /etc/hosts | awk '{pri...

dockerがredisを再起動するとmysqlデータが失われる問題を解決する

公式ドキュメント:したがって、mysql は次のように起動する必要があります。 docker run...

MySQLの共有ロックと排他ロックの使用例の分析

この記事では、例を使用して MySQL の共有ロックと排他ロックの使用方法を説明します。ご参考までに...

CentOS仮想マシンの時刻を変更する方法

上はシステム時間、下はハードウェア時間です。ここでは変更を加えているので、同じくらいの速さになってい...

MySQLは2つの日付間の日数、月数、年数を計算します

MySQL 組み込みの日付関数 TIMESTAMPDIFF は、2 つの日付間の秒数、分数、時間数、...

CSS ワールド - コード実践: 画像の Alt 情報の表示

ただし、デフォルトの src を持つ <img> 要素を使用してスクロール読み込み効果を...

JavaScript でタブバーの切り替え効果を実装する

フロントエンド開発者が必ず知っておくべきケースとして、タブバーの切り替え効果があります。タブバー自体...

HTML の基本的な使用法には、リンク、スタイルシート、span、div などが含まれます。

1. リンクハイパーテキスト リンクは HTML において非常に重要です。基本的な形式は次のとおりで...

webpackの遅延読み込みとプリロードの詳細な説明

目次通常の読み込み遅延読み込みプリロードプリロードを使用しないプリロードの使用要約する通常の読み込み...

CSS3 タイムラインアニメーション

成果を達成する html <h2>CSS3 タイムライン</h2> <...