序文 count 関数は、テーブルまたは配列内のレコードをカウントするために使用されます。count(*) は、NULL 値が含まれているかどうかに関係なく、取得された行の数を返します。最近、カウントの違いについてみんなが議論しているような気がしますので、私も書いておきます。ぜひメッセージを残して議論してください。それでは、早速、詳しい紹介を見ていきましょう。 1. テーブル構造: dba_jingjing@3306>[rds_test]>テーブル `test_count` を作成します ( -> `c1` varchar(10) デフォルト NULL, -> `c2` varchar(10) デフォルト NULL, -> キー `idx_c1` (`c1`) -> ) ENGINE=InnoDB デフォルト文字セット=utf8; クエリは正常、影響を受けた行は 0 行 (0.11 秒) 2. テストデータを挿入します。 dba_jingjing@3306>[rds_test]>test_count値(1,10)に挿入します。 クエリは正常、1 行が影響を受けました (0.03 秒) dba_jingjing@3306>[rds_test]>test_count に値(abc,null) を挿入します。 エラー 1054 (42S22): 「フィールド リスト」に不明な列「abc」があります dba_jingjing@3306>[rds_test]>test_count に値 ('abc'、null) を挿入します。 クエリは正常、1 行が影響を受けました (0.04 秒) dba_jingjing@3306>[rds_test]>test_count に値(null,null) を挿入します。 クエリは正常、1 行が影響を受けました (0.04 秒) dba_jingjing@3306>[rds_test]>test_count に値 ('368rhf8fj'、null) を挿入します。 クエリは正常、1 行が影響を受けました (0.03 秒) dba_jingjing@3306>[rds_test]>test_countから*を選択します。 +-----------+------+ | c1 | c2 | +-----------+------+ | 1 | 10 | | abc | NULL | | NULL | NULL | | 368rhf8fj | NULL | +-----------+------+ セット内の 4 行 (0.00 秒) テスト: dba_jingjing@3306>[rds_test]>test_countからcount(*)を選択します。 +----------+ | カウント(*) | +----------+ | 4 | +----------+ セット内の 1 行 (0.00 秒) 説明する: { "クエリブロック": { "select_id": 1, "メッセージ": "最適化されたテーブルを選択してください" セットに 1 行、警告 1 件 (0.00 秒) dba_jingjing@3306>[rds_test]>test_countからcount(1)を選択します。 +----------+ | カウント(1) | +----------+ | 4 | +----------+ セット内の 1 行 (0.00 秒) 説明する: { "クエリブロック": { "select_id": 1, "メッセージ": "最適化されたテーブルを選択してください" セットに 1 行、警告 1 件 (0.00 秒) dba_jingjing@3306>[rds_test]>test_countからcount(c1)を選択します。 +-----------+ | カウント(c1) | +-----------+ | 3 | +-----------+ セット内の 1 行 (0.00 秒) "テーブル": { "テーブル名": "test1", "アクセスタイプ": "インデックス", "キー": "idx_c1", 「使用されるキーパーツ」: [ 「c1」 ]、 "キーの長さ": "33", では、なぜ「key_length」が「33」であるのでしょうか? セカンダリ インデックスとは何ですか?次のセクションを参照 count(*)とcount(1)の間には違いはありませんが、count(col)の間には違いがあります。 実行プランには特徴があります。インデックスとテーブルをクエリしないことがわかり、場合によっては、テーブルをクエリせず非常に高速になる、最適化された select tables が表示されます。 Extra では、「Select tables optimized away」と表示されることがあります。これは、最適化するより良いものが何もないことを意味します。
---MySQL の「Select tables optimized away」の意味は、「これ以上最適化できるものはありません」ではありません。公式の説明の要点は次のとおりです。 したがって、合理的な説明は次のようになります。 1 データはすでにメモリ内に存在し、直接読み取ることができます。 2 データは、関数や式の値などの計算の結果と考えることができます。 3 クエリ結果がオプティマイザによって「予測」されると、実行しなくても結果を取得できるため、「選択を実行する必要はありません」。 要約する 上記はこの記事の全内容です。この記事の内容が皆さんの勉強や仕事に一定の参考学習価値を持つことを願っています。ご質問があれば、メッセージを残してコミュニケーションしてください。123WORDPRESS.COM を応援していただきありがとうございます。 以下もご興味があるかもしれません:
|
<<: 開発者とオペレーターが注目すべき Linux デバッグ ツール [推奨]
>>: JavaScriptのURLオブジェクトとは何かについて話しましょう
<br /> テキスト、シンボル、リンクの 3 つの側面に焦点を当て、主に中国語で、私の...
目次1. ページレイアウト2. 画像のアップロードと表示3. キャンバスを初期化する4. テンプレー...
目次MySQLマスタースレーブの基本原理3つのbinlog形式の比較混合形式のバイナリログが存在する...
VMware Tools は VMware 仮想マシンに付属するツールで、VirtualBox (...
MySQL ドキュメントでは、MySQL 変数はシステム変数とユーザー変数の 2 つのカテゴリに分類...
背景:かなり前(2017.6.5、記事にはタイムリーさがあり、特に使用されているツールは頻繁に更新さ...
Js での 2 次元配列の作成:まず、JavaScript は 1 次元配列のみをサポートしています...
この記事は主に、純粋な CSS3 を使用して div が順番に出入りする効果を紹介します。一定の参考...
Dockerデスクトップをインストールするダウンロード先: Docker Desktop for M...
Vue におけるストアの最も単純な応用はグローバル ストレージです。ここでは、相互にジャンプするため...
ビジネス要件最近開発したプロジェクトの一つに、WeChat公式アカウントに関連したH5ページがありま...
目次1. ルータビュー2. ルータリンク3. リダイレクト4. ルーティングエイリアス5. ルーティ...
目次結論は実践分析拡張機能要約する結論は親コンポーネントでカスタム イベントが定義されている場合、子...
この記事では、WeChatアプレットの具体的なコードを共有し、簡単なチャットルームを実装します。具体...