1. COUNT(*) と COUNT(COL) COUNT(*)は通常、主キーに対してインデックススキャンを実行しますが、COUNT(COL)は必ずしもそうではありません。また、前者は統計テーブル内の一致するすべてのレコードの合計数をカウントしますが、後者は計算テーブル内の一致するすべてのCOLレコードの数をカウントします。違いはあります。 1. SELECT COUNT(*) FROM tablename は、どのような場合でも最適な選択です。 2. SELECT COUNT(*) FROMtablename WHERE COL = 'value'; のようなクエリを減らしてみてください。 3. SELECT COUNT(COL) FROM tablename WHERE COL2 ='value' の発生を防ぎます。 2. COUNT(*) または COUNT(id) 私の理解によれば、ID が自動増分主キーである場合、その番号を計算するとすべてのフィールドの数を計算するよりも明らかにリソースの消費が少なくなるため、COUNT(id) を使用する方が高速になるはずです。しかし、MySQL クエリを高速化する方法についての同様の記事を複数見てきました。これらの記事では、主キーを直接 COUNT するのではなく、SELECT COUNT(*) を使用することを推奨しています。これはなぜでしょうか? これは、MyISAM エンジンを使用するテーブルがエントリの総数を格納するためと思われます。WHERE がない場合、または WHERE が常に true の場合 (WHERE 1 など)、COUNT(*) はエントリの総数を直接返すことができます。 さらに、COUNT(*) が「すべてのフィールドを計算する」ことを意味しないことは明らかです。明らかに、MySQL は * を「データの一部」として解釈します。 テストデータ、単純な比較、それ以上のテストなし: #0.817 - 100万件のレコードのクエリ時間 select count(*) from student ; #0.789 - 100 万件のレコードのクエリ時間 select count(id) from student; #1.011-100万件のレコードのクエリ時間 select count(name) from student; #1.162-100万件のレコードのクエリ時間SELECT COUNT(*) FROM student WHERE namelike '%xiaoli%';#デフォルトでは、クエリには主キーインデックスが使用されますが、like条件を追加するとインデックスが無効になります 要約する 一般的に、COUNT(id) を使用する方が高速です。参考までに簡単な比較を示します。 以上が、MySQL 最適化の概要 - クエリの総数に関するこの記事の内容のすべてです。皆様のお役に立てれば幸いです。興味のある方は、サブクエリの代わりに結合を使用した MySQL の最適化、MYSQL サブクエリとネストされたクエリの最適化例の分析、MySQL のステートメント サブクエリの効率最適化スキル例などを参照してください。不足がある場合は、メッセージを残して指摘してください。このサイトをサポートしてくれた友人たちに感謝します! 以下もご興味があるかもしれません:
|
<<: jsはシングルクリックでテーブルを変更することを実装します
>>: docker で php+nginx+swoole+mysql+redis 環境を構築する方法
目次JS 関数呼び出し、適用、バインドメソッド1. call() メソッド1. call() メソッ...
目次1 約束呼び出しチェーンを中断する約束を破る中止メソッドのラッピング - Axios の Can...
これは、CSS 3.0 で実装されたテキストのホバーとジャンプ効果です。効果は次のとおりです。 以下...
XHTML は CSS レイアウトの基礎です。jb51.net は常に XHTML 知識の習得を重視...
JavaとMysql 8.0.18バージョンの接続方法については、参考までに具体的な内容は以下のとお...
1. ビジネスシナリオの紹介MySQLを使用する電子商取引システムがあるとします。大量のデータを保存...
この記事の例では、参考までに時間セレクターを実装するためのjQueryの具体的なコードを共有していま...
目次1. 配列を結合する2. 配列をマージする(最初に) 3. 配列の複製4. 構造化分解割り当て5...
コンパイル後にAngularプロジェクトをNginxにデプロイする方法をオンラインで検索すると、ほと...
NULL および NOT NULL 修飾子、DEFAULT 修飾子、AUTO_INCREMENT 修...
まず、ハードディスクデバイスにデータディスクがあるかどうかを確認します # まずfdisk -lを実...
1 はじめに優れたコーディング習慣は優れたプログラマーが備えるべき資質ですが、コードの品質を保証する...
この記事は、参考のためにMySQL 8.0.16のインストールグラフィックチュートリアルを記録してい...
視覚効果が非常に美しく、訪問者に強い印象を残すことがわかります。さらに、重要なポイントが強調され、訴...
この記事では、例を使用して、MySQL 8 の共通テーブル式 (CTE) の使用方法を説明します。ご...