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

mysql技巧之select count的區(qū)別分析

 更新時間:2013年08月19日 22:09:19   作者:  
在工作過程中,時不時會有開發(fā)咨詢幾種select count()的區(qū)別,我總會告訴他們使用select count(*) 就好。下文我會展示幾種sql的執(zhí)行計劃來說明為啥是這樣。

1.測試環(huán)境

OS:Linux
DB:mysql-5.5.18
table:innodb存儲引擎

表定義如下:

2. 測試場景與分析【統(tǒng)計表group_message的記錄數(shù)目】

(1)select count(*)方式

(2)select count(1)方式

(3)select count(col_name)方式

分別使用

select count(group_id)

select count(user_id)

select count(col_null)

     通過上述測試結(jié)果可以看到,select count(*)和select count(1)都使用了group_id這個最短的二級索引??赡苡腥藭枮樯恫挥酶痰闹麈I索引【int類型】呢,這主要是因為innodb存儲引擎下,主鍵索引實質(zhì)包含了索引和數(shù)據(jù),掃描主鍵索引實際是掃描物理記錄,代價實質(zhì)是最大的。再來看看幾種select count(col_name), count(group_id)使用了最短二級索引,因為該列就是索引列;而count(user_id)則使用了組合索引,由于user_id實質(zhì)不能利用該索引,但掃描索引也能得到記錄數(shù),而且比掃描物理記錄代價小,這里應(yīng)該是mysql的一個優(yōu)化;count(col_null)則不能使用索引,因為該列含有null值,所以效率最低。另外,對于含有null值的行,count(col_null)實際不會統(tǒng)計,這會與你想統(tǒng)計表記錄數(shù)目的初衷不符,比如測試表有852226條記錄,但col_null列只有1行非空,則統(tǒng)計結(jié)果如下:

3.測試結(jié)論

mysql中,需要通過selct count 統(tǒng)計表記錄數(shù)目時,使用count(*)或count(1)就好。

相關(guān)文章

  • winx64下mysql5.7.19的基本安裝流程(詳細(xì))

    winx64下mysql5.7.19的基本安裝流程(詳細(xì))

    這篇文章主要介紹了winx64下mysql5.7.19的基本安裝流程,需要的朋友可以參考下
    2017-10-10
  • MySQL如何查看建庫建表語句

    MySQL如何查看建庫建表語句

    這篇文章主要介紹了MySQL如何查看建庫建表語句問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • 詳解在Windows環(huán)境下訪問linux虛擬機(jī)中MySQL數(shù)據(jù)庫

    詳解在Windows環(huán)境下訪問linux虛擬機(jī)中MySQL數(shù)據(jù)庫

    這篇文章主要介紹了如何Windows環(huán)境下訪問linux虛擬機(jī)中MySQL數(shù)據(jù)庫,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • MYSQL 隨機(jī) 抽取實現(xiàn)方法及效率分析

    MYSQL 隨機(jī) 抽取實現(xiàn)方法及效率分析

    MYSQL的隨機(jī)抽取實現(xiàn)方法。舉個例子,要從tablename表中隨機(jī)提取一條記錄,大家一般的寫法就是:SELECT * FROM tablename ORDER BY RAND() LIMIT 1。
    2009-05-05
  • MySQL同步ES(Elasticsearch)的四種常見方案分享

    MySQL同步ES(Elasticsearch)的四種常見方案分享

    MySQL和Elasticsearch(ES)是兩個非常重要的數(shù)據(jù)存儲和搜索技術(shù),MySQL是一種關(guān)系型數(shù)據(jù)庫,而ES則是一種文檔型數(shù)據(jù)庫,在許多情況下,我們需要將MySQL中的數(shù)據(jù)同步到ES中,本文將介紹四種常見的MySQL同步ES方案,需要的朋友可以參考下
    2023-07-07
  • MySQL的prepare使用及遇到bug解析過程

    MySQL的prepare使用及遇到bug解析過程

    在一次開發(fā)中使用 MySQL PREPARE 以后,從 prepare 直接取 name 賦值給 lex->prepared_stmt_name 然后給 EXECUTE 用,發(fā)現(xiàn)有一定概率找不到 prepare stmt 的 name,于是開始動手調(diào)查問題發(fā)生的原因,本文給大家分享mysql prepare使用及問題解決,感興趣的朋友一起看看吧
    2022-05-05
  • MySQL 中 blob 和 text 數(shù)據(jù)類型詳解

    MySQL 中 blob 和 text 數(shù)據(jù)類型詳解

    本文主要介紹了MySQL中blob和text數(shù)據(jù)類型詳解,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • mysql數(shù)據(jù)庫在表中添加數(shù)據(jù)三種操作方式

    mysql數(shù)據(jù)庫在表中添加數(shù)據(jù)三種操作方式

    這篇文章主要介紹了mysql數(shù)據(jù)庫在表中添加數(shù)據(jù)三種方式,首先創(chuàng)建數(shù)據(jù)庫和表,創(chuàng)建完成后就可以進(jìn)行添加數(shù)據(jù)的操作了,本文結(jié)合實例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-08-08
  • MySQL數(shù)據(jù)庫統(tǒng)計函數(shù)COUNT的使用及說明

    MySQL數(shù)據(jù)庫統(tǒng)計函數(shù)COUNT的使用及說明

    這篇文章主要介紹了MySQL數(shù)據(jù)庫統(tǒng)計函數(shù)COUNT的使用及說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • MySQL update set 和 and的區(qū)別

    MySQL update set 和 and的區(qū)別

    這篇文章主要介紹了MySQL update set 和 and的區(qū)別,幫助大家更好的理解和學(xué)習(xí)使用MySQL數(shù)據(jù)庫,感興趣的朋友可以了解下
    2021-05-05

最新評論

璧山县| 库伦旗| 乐东| 万盛区| 五原县| 丰台区| 满城县| 禄劝| 隆回县| 海口市| 阳东县| 油尖旺区| 汤阴县| 泽普县| 股票| 厦门市| 庄河市| 屏东县| 九龙县| 湘阴县| 新干县| 澎湖县| 南召县| 太仓市| 麻江县| 云和县| 玉林市| 永清县| 遂平县| 灵台县| 华阴市| 新乡县| 玉门市| 灵石县| 焦作市| 仁寿县| 中宁县| 屯留县| 双鸭山市| 和田市| 湘西|