最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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ū)別,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下。

前言

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

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ù)可以被認(rèn)為是一個經(jīng)計算后的結(jié)果,如函數(shù)或表達(dá)式的值; 

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

總結(jié)

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

相關(guān)文章

  • mysql中union和union?all的使用及注意事項

    mysql中union和union?all的使用及注意事項

    這篇文章主要給大家介紹了關(guān)于mysql中union和union?all的使用及注意事項的相關(guān)資料,需要的朋友可以參考下
    2022-08-08
  • MySQL8.0/8.x忘記密碼更改root密碼的實戰(zhàn)步驟(親測有效!)

    MySQL8.0/8.x忘記密碼更改root密碼的實戰(zhàn)步驟(親測有效!)

    忘記root密碼的場景還是比較常見的,特別是自己搭的測試環(huán)境經(jīng)過好久沒用過時,很容易記不得當(dāng)時設(shè)置的密碼,下面這篇文章主要給大家介紹了關(guān)于MySQL8.0/8.x忘記密碼更改root密碼的實戰(zhàn)步驟,親測有效!需要的朋友可以參考下
    2023-04-04
  • MySQL權(quán)限異常排查:用戶無法登錄或操作的解決方案

    MySQL權(quán)限異常排查:用戶無法登錄或操作的解決方案

    在日常開發(fā)與運維中,MySQL 權(quán)限問題是最常見、最令人抓狂的小故障之一,本文將系統(tǒng)性地梳理 MySQL 權(quán)限體系的核心機制,深入剖析 用戶無法登錄或執(zhí)行操作的 10+ 種典型場景,并提供 可落地的排查步驟、修復(fù)命令與預(yù)防策略,需要的朋友可以參考下
    2026-02-02
  • mysql:Can''t start server: can''t create PID file: No space left on device

    mysql:Can''t start server: can''t create PID file: No space

    這篇文章主要介紹了mysql啟動失敗不能正常啟動并報錯Can't start server: can't create PID file: No space left on device問題解決方法,需要的朋友可以參考下
    2015-05-05
  • MySQL存儲過程的優(yōu)化實例

    MySQL存儲過程的優(yōu)化實例

    在編寫MySQL存儲過程的過程中,我們會時不時地需要對某些存儲過程進(jìn)行優(yōu)化,其目的是確保代碼的可讀性、正確性及運行性能。本文以作者實際工作為背景,介紹了對某一個MySQL存儲過程優(yōu)化的整個過程。
    2016-07-07
  • MySQL SQL查詢新模式CTE使用詳解

    MySQL SQL查詢新模式CTE使用詳解

    本文介紹MySQL 8.0引入的CTE(Common Table Expression)特性,通過實際業(yè)務(wù)場景案例,展示如何用CTE重構(gòu)復(fù)雜的嵌套SQL語句,實現(xiàn)樹形結(jié)構(gòu)遍歷,并提升查詢效率,CTE通過定義臨時結(jié)果集,簡化了多層嵌套子查詢,提高了復(fù)雜查詢的可讀性和復(fù)用性,感興趣的朋友跟隨小編一起看看吧
    2026-01-01
  • MySql數(shù)據(jù)庫之a(chǎn)lter表的SQL語句集合

    MySql數(shù)據(jù)庫之a(chǎn)lter表的SQL語句集合

    mysql之a(chǎn)lter表的SQL語句集合,包括增加、修改、刪除字段,重命名表,添加、刪除主鍵等。本文給大家介紹MySql數(shù)據(jù)庫之a(chǎn)lter表的SQL語句集合,感興趣的朋友一起學(xué)習(xí)吧
    2016-04-04
  • 想取消錯誤的mysql命令怎么辦?

    想取消錯誤的mysql命令怎么辦?

    今天小編就為大家分享一篇關(guān)于想取消錯誤的mysql命令怎么辦?,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-04-04
  • 一文弄懂MySQL中redo?log與binlog的區(qū)別

    一文弄懂MySQL中redo?log與binlog的區(qū)別

    在學(xué)習(xí)mysql數(shù)據(jù)庫時,不可避免要去接觸到redo log和binlog,好多人對這兩者的概念分不太清,下面這篇文章主要給大家介紹了關(guān)于MySQL中redo?log與binlog區(qū)別的相關(guān)資料,需要的朋友可以參考下
    2022-02-02
  • MySQL正則表達(dá)式入門教程

    MySQL正則表達(dá)式入門教程

    這篇文章主要介紹了MySQL正則表達(dá)式,一個簡單的MySQL正則表達(dá)式入門教程,需要的朋友可以參考下
    2014-04-04

最新評論

松阳县| 炉霍县| 岳阳县| 阳新县| 临邑县| 亳州市| 云霄县| 定西市| 缙云县| 万宁市| 高邑县| 永定县| 建湖县| 宜宾市| 天津市| 同心县| 闸北区| 连城县| 厦门市| 清远市| 日喀则市| 嫩江县| 施秉县| 富蕴县| 原平市| 洛阳市| 蕲春县| 措美县| 霍城县| 循化| 望江县| 绥棱县| 靖边县| 博乐市| 淳化县| 天津市| 湘阴县| 晋中市| 安仁县| 肃南| 诸城市|