欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL中count(*)、count(1)和count(col)的區(qū)別匯總

 更新時間:2018年03月11日 14:44:21   作者:jingjing.wang  
count()函數(shù)是用來統(tǒng)計表中記錄的一個函數(shù),返回匹配條件的行數(shù),下面這篇文章主要給大家總結(jié)介紹了關(guān)于MySQL中count(*)、count(1)和count(col)的區(qū)別,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下。

前言

count函數(shù)是用來統(tǒng)計表中或數(shù)組中記錄的一個函數(shù),count(*) 它返回檢索行的數(shù)目, 不論其是否包含 NULL值。最近感覺大家都在討論count的區(qū)別,那么我也寫下吧:歡迎留言討論,話不多說了,來一起看看詳細的介紹吧。

1、表結(jié)構(gòu):

dba_jingjing@3306>[rds_test]>CREATE TABLE `test_count` (
 -> `c1` varchar(10) DEFAULT NULL,
 -> `c2` varchar(10) DEFAULT NULL,
 -> KEY `idx_c1` (`c1`)
 -> ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Query OK, 0 rows affected (0.11 sec)

2、插入測試數(shù)據(jù):

dba_jingjing@3306>[rds_test]>insert into test_count values(1,10);
Query OK, 1 row affected (0.03 sec)

dba_jingjing@3306>[rds_test]>insert into test_count values(abc,null);
ERROR 1054 (42S22): Unknown column 'abc' in 'field list'
dba_jingjing@3306>[rds_test]>insert into test_count values('abc',null);
Query OK, 1 row affected (0.04 sec)

dba_jingjing@3306>[rds_test]>insert into test_count values(null,null);
Query OK, 1 row affected (0.04 sec)

dba_jingjing@3306>[rds_test]>insert into test_count values('368rhf8fj',null);
Query OK, 1 row affected (0.03 sec)

dba_jingjing@3306>[rds_test]>select * from test_count;
+-----------+------+
| c1  | c2 |
+-----------+------+
| 1   | 10 |
| abc  | NULL |
| NULL  | NULL |
| 368rhf8fj | NULL |
+-----------+------+
4 rows in set (0.00 sec)

測試:

dba_jingjing@3306>[rds_test]>select count(*) from test_count;
+----------+
| count(*) |
+----------+
|  4 |
+----------+
1 row in set (0.00 sec)
   EXPLAIN: {
  "query_block": {
   "select_id": 1,
   "message": "Select tables optimized away"
  1 row in set, 1 warning (0.00 sec)
dba_jingjing@3306>[rds_test]>select count(1) from test_count;
+----------+
| count(1) |
+----------+
|  4 |
+----------+
1 row in set (0.00 sec)
   EXPLAIN: {
  "query_block": {
   "select_id": 1,
   "message": "Select tables optimized away"
  1 row in set, 1 warning (0.00 sec)
dba_jingjing@3306>[rds_test]>select count(c1) from test_count;
+-----------+
| count(c1) |
+-----------+
|   3 |
+-----------+
1 row in set (0.00 sec)
   "table": {
    "table_name": "test1",
    "access_type": "index",
    "key": "idx_c1",
    "used_key_parts": [
     "c1"
    ],
    "key_length": "33",

那么這里面的"key_length": "33",為什么是33呢,什么是二級索引?見下節(jié)

count(*) 和count(1) 是沒有區(qū)別的,而count(col) 是有區(qū)別的

執(zhí)行計劃有特點:可以看出它沒有查詢索引和表,有時候會出現(xiàn)select tables optimized away 不會查表,速度會很快

Extra有時候會顯示“Select tables optimized away”,意思是沒有更好的可優(yōu)化的了。

官方解釋For explains on simple count queries (i.e. explain select count(*) from people) the extra
       section will read "Select tables optimized away."
    This is due to the fact that MySQL can read the result directly from the table internals and therefore does not need to perform the select.

---MySQL對于“Select tables optimized away”的含義, 不是"沒有更好的可優(yōu)化的了", 官方解釋中關(guān)鍵的地方在于:
 MySQL can read the result directly

所以,合理的解釋是: 

    1 數(shù)據(jù)已經(jīng)在內(nèi)存中可以直接讀取; 

    2 數(shù)據(jù)可以被認為是一個經(jīng)計算后的結(jié)果,如函數(shù)或表達式的值; 

    3 一旦查詢的結(jié)果被優(yōu)化器"預(yù)判"可以不經(jīng)執(zhí)行就可以得到結(jié)果,所以才有"not need to perform the select".

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • MySQL 兩張表數(shù)據(jù)合并的實現(xiàn)

    MySQL 兩張表數(shù)據(jù)合并的實現(xiàn)

    本文主要介紹了MySQL 兩張表數(shù)據(jù)合并的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-01-01
  • 如何用命令行進入mysql具體操作步驟

    如何用命令行進入mysql具體操作步驟

    逛論壇時無意發(fā)現(xiàn)有個伙計提出這樣的問題,如何用命令行進入mysql,搜集整理了一些特意貼出來與大家分享,感興趣的你可以參考下希望對你有所幫助
    2013-03-03
  • MYSQL使用正則表達式過濾數(shù)據(jù)

    MYSQL使用正則表達式過濾數(shù)據(jù)

    這篇文章主要介紹了MYSQL使用正則表達式過濾數(shù)據(jù)的相關(guān)資料,感興趣的小伙伴們可以參考一下
    2016-05-05
  • MySql是否需要commit詳解

    MySql是否需要commit詳解

    在本篇文章里小編給大家分享了關(guān)于MySql是否需要commit的相關(guān)知識點內(nèi)容,需要的朋友們跟著操作下。
    2019-05-05
  • 深入理解MySQL數(shù)據(jù)類型的選擇優(yōu)化

    深入理解MySQL數(shù)據(jù)類型的選擇優(yōu)化

    這篇文章主要介紹了深入理解MySQL數(shù)據(jù)類型的選擇優(yōu)化,MySQL數(shù)據(jù)類型是定義列中可以存儲什么數(shù)據(jù)以及該數(shù)據(jù)實際怎樣存儲的基本規(guī)則,正確的選擇數(shù)據(jù)庫字段的字段類型對于數(shù)據(jù)庫性能有很大的影響
    2022-08-08
  • MySQL日志管理和備份與恢復(fù)

    MySQL日志管理和備份與恢復(fù)

    這篇文章主要介紹了MySQL如何實現(xiàn)日志的管理,備份與恢復(fù),本文有一定的參考價值,感興趣的小伙伴可以參考閱讀
    2023-04-04
  • 內(nèi)網(wǎng)ssh/mysql登錄緩慢的解決方法

    內(nèi)網(wǎng)ssh/mysql登錄緩慢的解決方法

    本文介紹了“內(nèi)網(wǎng)ssh/mysql登錄緩慢的解決方法”,需要的朋友可以參考一下
    2013-03-03
  • MySQL刪除表時I/O錯誤的原因分析與解決

    MySQL刪除表時I/O錯誤的原因分析與解決

    這篇文章主要給大家介紹了關(guān)于MySQL刪除表時I/O錯誤的原因分析與解決方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-08-08
  • mysql滑動聚合/年初至今聚合原理與用法實例分析

    mysql滑動聚合/年初至今聚合原理與用法實例分析

    這篇文章主要介紹了mysql滑動聚合原理與用法,結(jié)合實例形式分析了mysql滑動聚合的相關(guān)功能、原理、使用方法及操作注意事項,需要的朋友可以參考下
    2019-12-12
  • MySQL事務(wù)的隔離性是如何實現(xiàn)的

    MySQL事務(wù)的隔離性是如何實現(xiàn)的

    最近做了一些分布式事務(wù)的項目,對事務(wù)的隔離性有了更深的認識,后續(xù)寫文章聊分布式事務(wù)。今天就復(fù)盤一下單機事務(wù)的隔離性是如何實現(xiàn)的?感興趣的可以了解一下-
    2021-09-09

最新評論