1. 説明 MySQLでは、テーブル内の行の総数を取得する必要がある場合、通常は次の文を使用します。 テーブルからcount(*)を選択します。 実際、count 関数には * に加えて、定数、主キー ID、フィールドなどの他のパラメータを配置できます。では、それらの違いは何でしょうか?それらはどれくらい効率的ですか?テーブル内の行数を取得するにはどの方法を使用すればよいですか? count 関数の動作原理を理解すれば、上記の質問に対する答えは明らかになると思います。 2. テーブル構造 上記の問題を解決するために、主キー ID と名前 (後者は null にすることができます) の 2 つのフィールドを持つユーザー テーブルを作成しました。テーブル作成ステートメントは次のとおりです。 テーブル `user` を作成します ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主キー', `name` varchar(255) デフォルト NULL コメント '名前', 主キー (`id`) )ENGINE=InnoDB デフォルト文字セット=utf8; このテーブルには 6,000,000 件のレコードがあります。最初の 1,000,000 件のレコードの名前フィールドは空で、残りのレコードには name=id があります。ストアド プロシージャを使用してテスト データを作成するコードは次のとおりです。 -- ストアド プロシージャを使用してテスト データ区切り文字を作成します。 プロシージャ idata() を作成する 始める iをintとして宣言します。 i=1 に設定します。 i<=6000000の間 ユーザー値(i, i)に挿入します。 i=i+1 と設定します。 終了しながら; 終わり;; デリミタ; idata() を呼び出す。 -- 最初の 1,000,000 件のレコードの名前フィールドを null に設定します ユーザーを更新し、ID<1000000 の場合、name=null を設定します。 3. SQL文と結果を実行する count 関数のさまざまなパラメータの違いを区別するために、SQL の実行効率を主に実行時間とスキャンされた行数という 2 つの側面から説明します。また、返される結果から count 関数の特性も説明します。
3.1 * シンボル mysql> ユーザーから count(*) を選択します。 +----------+ | カウント(*) | +----------+ | 6000000 | +----------+ セット内1列(0.76秒) テーブル全体を走査し、値を取得せず (最適化後、null であってはならず、値を取得しません)、カウントを累積し、最後に結果を返します。 3.2 定数 mysql> ユーザーからcount(1)を選択します。 +----------+ | カウント(1) | +----------+ | 6000000 | +----------+ セット内1列(0.76秒) テーブル全体を走査し、行ごとにデータを取得し、各行に値 1 を割り当て、フィールドが空にならないことを確認してカウントを累積し、最後に結果を返します。 3.3 空でないフィールド mysql> ユーザーから count(id) を選択します。 +-----------+ | カウント(ID) | +-----------+ | 6000000 | +-----------+ セット1列(0.85秒) テーブル全体を走査し、行ごとにデータを取得し (走査には最小のインデックス ツリーが選択されるため、同じ状況でフィールドをカウントするよりも効率的です)、各行の主キー ID を取得し、フィールドが空にならないことを確認してカウントを累積し、最後に結果を返します。 3.4 ヌル可能フィールド mysql> ユーザーから count(name) を選択します。 +-------------+ | count(名前) | +-------------+ | 5900001 | +-------------+ セット内1列(0.93秒)
4. 実行結果の分析 4.1 結果セット まず、結果セットの観点から見ると、最初の 3 つの SQL 文の目的は同じです。つまり、すべての行の数を返すことです。count 4.2 実行時間 実行時間の観点から見ると、効率はおおよそ 5. 結論 Count は集計関数です。返された結果セットは行ごとに判断されます。count 関数のパラメータが NULL でない場合は累積値が 1 増加し、それ以外の場合は増加しません。最後に、累積値が返されます。
したがって、count(*)を使用する方が適切です。 上記はMySQLのcount関数の正しい使い方の詳しい内容です。MySQL count関数の詳細については、123WORDPRESS.COMの他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
<<: Vue の要素カレンダー コンポーネントを使用したサンプル コード
主キーとは何ですか?主キーは、テーブル内の各タプル (行) を一意に識別するテーブル内の列です。主キ...
フロントエンド開発者が習得する必要のあるスキル。これらのスキルにより、フロントエンド開発者の価値は数...
cpanel 管理バックエンドを開き、「詳細」オプションの下に「Clock Guardian Job...
環境の紹介オペレーティングシステム: Centos 7.4 Zabbix バージョン: zabbix...
降順インデックスとは何ですか?インデックスについてはよくご存知かもしれませんが、降順インデックスにつ...
find コマンドは、指定されたディレクトリ内のファイルを検索するために使用されます。引数の前の文字...
目次1. appIDの申請と設定1. appidの取得方法2. AppIDの設定2. 基本的なユーザ...
序文: MySQL では、システムが多くの文字セットをサポートしており、異なる文字セット間にはわずか...
join() メソッド: 指定された区切り文字を使用して配列内のすべての要素を文字列に接続します。例...
1. Windows 10 Enterprise Editionに付属する仮想マシンHyper-Vを...
これは新しいバージョンではもう不可能なようで、推奨されません。そうでない場合は、ソフト リンクを直接...
序文これは、オンライン コンテナーの拡張によって発生した調査です。最終的には、実際の OOM が原因...
MySQLへのリモートアクセスを有効にするデフォルトでは、MySQL ユーザーにはリモート アクセス...
以下は私がまとめた基本的なSQL知識です。主に参考資料として、また将来の他の初心者の助けとして、私自...
既存のイメージから新しいイメージを構築することは、Dockerfile ドキュメントを通じて行われま...