11111111111
知識共享平臺
知識共享平臺

討教大學平臺

  • 首頁
  • 免費課
  • 精品課
  • 討教題庫
  • 企業服務

    hot

  • 下載APP
  • 證書查詢
  • 關于我們
我問
討教號
搜索
消息
  • 我的文章

    我的關注

    我的問答

    我的秘密

    我的評論

    我的訂閱

    我的打賞

    我的錢包

    我的通知

    我的設置

    退出登錄

  • ×

    登錄

    討教 | 通行證

    登錄
    立即注冊
    忘記密碼?
    使用微信登錄

    提問 ×

    寫下你的問題,準確的表述更容易得到答案

    類型話題

    選擇支付方式
    您的討教幣 111 付費金額

    国产第一亚洲_浪货一天不做就难受呀_欧洲视频在线观看_亚洲精品一区二区三区美女

    你是一直認為 count(1) 比 count(*) 效率高么?

    JAVA葵花寶典
    2019-06-20 17:04:25
    16篇 作品
    2015 總閱讀量

    MySQL count(1) 真的比 count(*) 快么? 反正同事們都是這么說的,我也姑且覺得對吧,那么沒有自己研究一下究竟?如果我告訴你他們一樣,你信么?

    有 Where 條件的 count,會根據掃碼結果count 一下所有的行數,其性能更依賴于你的 Where 條件,所以文章我們僅針對沒有 Where 的情況進行說明。

    MyISAM 引擎會把一個表的總行數記錄了下來,所以在執行 count(*) 的時候會直接返回數量,執行效率很高。在 MySQL 5.5 以后默認引擎切換為 InnoDB,InnoDB 因為增加了版本控制(MVCC)的原因,同時有多個事務訪問數據并且有更新操作的時候,每個事務需要維護自己的可見性,那么每個事務查詢到的行數也是不同的,所以不能緩存具體的行數,他每次都需要 count 一下所有的行數。那么 count(1) 和 count(*)有區別么?

    InnoDB handles SELECT COUNT(*) and SELECT COUNT(1) operations in the same way. There is no performance difference. 這是官網的解釋,直接點擊閱讀原文查看官文,所以兩種實現其實一樣,那么具體為什么一樣呢?

    探究這個問題首先我們需要理解 count 的含義,如下是官網給出的定義

    Returns a count of the number of non-NULL values of expr in the rows retrieved by a SELECT statement. The result is a BIGINT value.

    大致的解釋是返回 SELECT 語句檢索的行中 expr 的非 NULL 值的計數,到這里我們就明白了,首先它是一個聚合函數,然后對 SELECT 的結果集進行計數,但是需要參數不為 NULL。那么我們繼續閱讀官網的內容:

    COUNT(*) is somewhat different in that it returns a count of the number of rows retrieved, whether or not they contain NULL values.

    大致的內容是說,count(*) 不同,他不關心這個返回值是否為空都會計算他的count,因為 count(1) 中的 1 是恒真表達式,那么 count(*) 還是 count(1) 都是對所有的結果集進行 count,所以他們本質上沒有什么區別。

    當然這個地方 InnoDB 本身也做了一些優化,它會使用最小的二級索引來進行 count 的查詢優化。如果沒有二級索引才會選擇聚簇索引,這樣的設計單從 IO 的角度就節省了很多開銷。

    到這里我們明白了 count(*) 和 count(1) 本質上面其實是一樣的,那么 count(column) 又是怎么回事呢?

    count(column) 也是會遍歷整張表,但是不同的是它會拿到 column 的值以后判斷是否為空,然后再進行累加,那么如果針對主鍵需要解析內容,如果是二級所以需要再次根據主鍵獲取內容,又是一次 IO 操作,所以 count(column) 的性能肯定不如前兩者嘍,如果按照效率比較的話:count(*)=count(1)>count(primary key)>count(column)

    既然 count(*) 在查詢上依賴于所有的數據集,是不是我們在設計上也需要盡量的規避全量 count 呢?通常情況我們針對可預見的 count 查詢會做適當的緩存,可以是 Redis,也可以是獨立的 MySQL count 表,當然無論是哪種方式我們都需要考慮一致性的問題。

    到這里文章就結束了,你對 count() 有了重新的認識么?文中提到了一些關鍵字:聚簇索引、InnoDB、MyISAM、MVCC 不是本文的重點,有興趣可以持續關注訂閱號或置頂,后面會針對這些關鍵字逐一展開說明。


    本網站內容僅代表作者本人的觀點,不代表本網站的觀點和看法,與本網站立場無關,如有侵權請聯系討教。
    給作者打賞,鼓勵TA抓緊創作
    0人打賞金額
    JAVA葵花寶典
    16篇 作品
    2015 總閱讀量
    評論
    您可能感興趣的文章

    項目管理服務模式

    敏捷項目管理與傳統項目管理比較

    項目管理的特點

    PMO是什么?是管項目經理的嘛?

    項目經理必須關注的開會十大關鍵問題!

    項目的組成要素

    熱門話題 更多話題
    精益生產 質量管理 智能制造
    職場效率 項目管理 討教
    AI 大數據 六西格瑪
    ×

    給作者打賞,鼓勵TA抓緊創作!

    選擇支付方式
    選擇打賞金額
    注:打賞的收益歸作者,非平臺

    微信掃描支付

    打賞金額: 1元

    ×

    給作者打賞,鼓勵TA抓緊創作!

    您的討教幣
    填寫您打賞討教幣數量
    輸入密碼

    111

    注:打賞的收益歸作者,非平臺

    微信掃描支付

    打賞金額: 1元

    国产第一亚洲_浪货一天不做就难受呀_欧洲视频在线观看_亚洲精品一区二区三区美女

          一区二区三区四区国产精品| 激情综合激情| 免费h精品视频在线播放| 最近中文字幕日韩精品 | 亚洲一级电影| 狠狠入ady亚洲精品经典电影| 欧美国产日韩一二三区| 久久久久国产一区二区三区四区| 亚洲视频香蕉人妖| 亚洲日本免费电影| 亚洲国产日韩欧美在线动漫| 国产亚洲一区二区三区在线观看| 欧美视频成人| 欧美日韩和欧美的一区二区| 乱人伦精品视频在线观看| 香蕉国产精品偷在线观看不卡| 99国产精品国产精品久久 | 一区二区三区我不卡| 国产精品欧美日韩久久| 欧美日韩国产在线播放网站| 欧美成人中文字幕在线| 国产精品av一区二区| 欧美日韩黄色大片| 亚洲高清久久久| 国产综合精品| 国产一区二区三区电影在线观看 | 黄色亚洲大片免费在线观看| 国产综合视频在线观看| 国产日韩欧美制服另类| 国产亚洲成人一区| 激情欧美一区二区三区在线观看| 国产一区二区按摩在线观看| 国产欧美丝祙| 精久久久久久久久久久| 狠狠色狠狠色综合日日五| 激情亚洲网站| 亚洲国产日韩在线一区模特| 亚洲人成人一区二区三区| 99精品欧美一区| 亚洲深夜福利| 欧美在线免费播放| 麻豆精品视频在线| 欧美乱在线观看| 国产精品久久波多野结衣| 国产婷婷色综合av蜜臀av| 激情久久综合| 99re视频这里只有精品| 亚洲欧美综合国产精品一区| 久久精视频免费在线久久完整在线看 | 欧美国产日韩在线观看| 欧美日韩日日骚| 国产日韩在线看| 最新成人av网站| 亚洲综合日韩在线| 老司机午夜免费精品视频| 欧美啪啪一区| 韩国在线视频一区| 一区二区三区高清视频在线观看| 亚洲欧美综合精品久久成人| 蜜桃av一区二区在线观看| 国产精品白丝黑袜喷水久久久| 国产一区二区三区在线观看视频| 亚洲精品麻豆| 久久久久久久久久久一区| 欧美欧美天天天天操| 韩国av一区二区三区在线观看| 日韩亚洲欧美在线观看| 久久久久久亚洲精品不卡4k岛国| 欧美日本国产在线| 伊人久久亚洲热| 性18欧美另类| 国产精品盗摄一区二区三区| 在线日韩一区二区| 欧美一区二区三区在线观看视频| 欧美喷水视频| 亚洲第一级黄色片| 欧美在线一二三区| 欧美午夜美女看片| 亚洲国产视频直播| 久久青草欧美一区二区三区| 国产精品欧美一区喷水| 一区二区日韩| 欧美日韩另类一区| 亚洲精品一区在线| 欧美大片在线观看| 亚洲国产中文字幕在线观看| 久久国产免费| 国产一区999| 久久爱www.| 国产午夜精品全部视频播放| 中文久久乱码一区二区| 欧美日韩一区二区三区免费| 亚洲精品影院在线观看| 欧美本精品男人aⅴ天堂| 在线观看欧美日韩国产| 久热成人在线视频| 91久久久一线二线三线品牌| 欧美va亚洲va国产综合| 亚洲国产精品精华液2区45 | 狂野欧美激情性xxxx| 国内揄拍国内精品久久| 久久久久国产免费免费| 精久久久久久| 欧美电影美腿模特1979在线看| 在线成人小视频| 另类亚洲自拍| 亚洲精品国产精品国自产观看浪潮| 噜噜噜91成人网| 亚洲九九九在线观看| 欧美日韩一区二区三区在线看 | 欧美国产日韩一区二区三区| 亚洲精品美女在线| 欧美日韩在线第一页| 亚洲综合好骚| 黄色欧美日韩| 欧美—级高清免费播放| 亚洲一区二区三区高清| 国产一区二区三区四区| 欧美高清视频| 亚洲一级黄色片| 国内外成人免费激情在线视频| 欧美成人免费va影院高清| 一区二区三区久久精品| 国产日韩一区欧美| 欧美成人首页| 欧美在线免费播放| 99精品国产高清一区二区| 国产日韩av在线播放| 欧美国产日韩免费| 午夜亚洲性色福利视频| 亚洲高清免费| 国产毛片一区二区| 欧美激情aⅴ一区二区三区| 亚洲欧美日韩国产综合在线 | 亚洲精品系列| 国内精品一区二区三区| 国产精品久久久久久久久婷婷| 久久国产乱子精品免费女| 一区二区三区视频在线观看| 亚洲国产精品久久91精品| 国产农村妇女毛片精品久久莱园子| 欧美高清在线播放| 久久九九电影| 欧美在线3区| 亚洲在线免费| 一区二区三区日韩精品| 亚洲欧洲三级电影| 黄色亚洲大片免费在线观看| 国产精品日韩欧美一区| 欧美日韩久久| 欧美激情视频给我| 久久久av毛片精品| 午夜视频一区在线观看| 亚洲欧美日韩成人高清在线一区| 亚洲精品久久久久久久久久久久久| 国产日韩欧美高清| 国产精品久久婷婷六月丁香| 欧美日韩1区2区| 欧美精品在线免费播放| 欧美激情国产高清| 欧美美女日韩| 欧美日韩亚洲一区二区三区四区| 欧美国产在线观看| 欧美区国产区| 欧美日本国产一区| 欧美天天在线| 国产精品区一区二区三| 国产精品人人做人人爽人人添| 欧美午夜精品久久久久久久 | 午夜精品成人在线视频| 亚洲女女做受ⅹxx高潮| 欧美一区二区三区成人| 久久精品动漫| 麻豆91精品| 欧美激情视频一区二区三区免费 | 欧美精品久久久久久久免费观看 | 99热这里只有精品8| 亚洲网站在线观看| 亚洲中午字幕| 久久久久久久一区二区三区| 久久在线视频| 欧美日韩一区二区三区四区在线观看| 欧美三区美女| 国产一区二区成人| 亚洲国产专区校园欧美| 在线亚洲精品| 欧美在线影院| 欧美国产日韩在线观看| 国产精品国产一区二区| 国产主播在线一区| 亚洲毛片在线| 欧美在线网站| 欧美精品免费观看二区| 国产精品五区| 亚洲人成77777在线观看网| 这里只有精品在线播放| 久久久久久亚洲精品不卡4k岛国| 欧美激情亚洲精品| 国产日韩欧美| 一区二区高清在线观看|