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 の要素カレンダー コンポーネントを使用したサンプル コード
1. 準備1.1 Pythonインストールパッケージをダウンロードします(注:Pythonバージョン...
目次1. エラーメッセージ2. エラーの原因3. 解決策1. エラーメッセージ1. インストール後、...
次のような疑問が湧くかもしれません。MySQLをローカル (自分のコンピュータ) にインストールした...
目次1. Nginx の紹介2. 画像サーバーの構築1. Nginx の紹介Nginx はリバース ...
centos8 ディストリビューションは、BaseOS および AppStream リポジトリを通じ...
XML/HTML コードコンテンツをクリップボードにコピー<入力 id = "ユーザ...
Baiduクラウドディスク:リンク: https://pan.baidu.com/s/1hv5rUW...
Redis の紹介Redis は完全にオープンソースで無料であり、BSD プロトコルに準拠しており、...
XHTML 言語では、ul タグに li が含まれ、dl タグに dt と dd が含まれることは誰...
表のキャプションは表の上または下に配置でき、プロパティで調整できます。デフォルトのテーブル タイトル...
背景go-fastdfs は、http プロトコルをサポートする分散ファイルシステムです。一般的なプ...
この記事では、画像の切り取りとアップロードを実装するためのvue-cropperコンポーネントの具体...
pymysqlをインストールするpip install pymysql 2|0pymysqlの使用2...
ニーズの発見領域の一部のみスクロールでき、残りの部分は移動できない場合、どのような方法を使用しますか...
要約する地球環境 ➡️ ウィンドウ通常関数 ➡️ ウィンドウまたは未定義コンストラクター ➡️ 構築...