91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL中COUNT如何使用

發布時間:2021-06-23 15:23:33 來源:億速云 閱讀:251 作者:Leah 欄目:數據庫

這篇文章將為大家詳細講解有關MySQL中COUNT如何使用,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

  COUNT(expr)返回檢索行中expr不為NULL的數量,其結果是一個BIGINT類型的值,如果沒有符合行,那么返回0。該處需要注意的是所謂的NULL指的是expr表達式,并不是所需要檢測的數據行的值,如果expr與數據列名相同,那么則返回該數據列不為NULL的數量。

MySQL的COUNT

  對于傳統的存儲引擎InnoDb而言,存儲一個表的精確行數是十分困難的,因為多事務操作可能會并發,并且同時影響表的行數,所以為了避免并發線程查詢同一個表而得到不同的行數,InnoDb沒有對表的行數進行內部存儲,所以在InnoDb中,SELECT(*)僅僅返回當前事務所讀取到的行數。在MySQL5.7.18之前,InnoDb通過掃描聚簇索引來處理SELECTCOUNT(*)語句,5.7.18之后InnoDb使用最小且可用的第二索引來處理SELECTCOUNT(*)語句(除非查詢優化器提示使用一個其他的索引)。如果沒有第二索引,那么需要掃描聚簇索引。

  如果索引記錄沒有全部在緩沖池中,那么處理SELECTCOUNT(*)語句是需要耗費一些時間的。如果需要追求一個快速的計算,那么可以在應用中單獨設計一個表用于在目標表進行插入或刪除操作時記錄其數據條數。然而,在大量的并行處理來update目標表的計數器表時會很難擴展。如果可以SHOWTABLESTATUS語句來獲取該信息。

  InnoDb以相同的方式處理SELECTCOUNT(*)和SELECTCOUNT(1),并沒有性能上的差距。

  對于MyIsam引擎,COUNT(*)在沒有WHERE子句的情況下是非常快的,因為在MyIsam引擎中,表的精確行數會被保存下來。如果MyIsam表的第一列被設置為非空,那么COUNT(1)具有同樣的優化效果(在對于100w條含有非空的簡單數據進行COUNT(*)與COUNT(1)的對比測試沒有明顯發現性能差異)。

COUNT的規范

  COUNT(*)與COUNT(常量)都是查找表中記錄的行數,可以包含NULL數據;COUNT(列名)是查找表中該列非空的函數。

  對于COUNT(*)相比COUNT(常量)而言,COUNT(*)是SQL92中定義的標準統計行數的語法,所以許多數據庫對其進行優化,對于MySQL而言,COUNT(常量)也是轉換為COUNT(*)執行的,標準語法優先使用COUNT(*),因為各個數據庫查詢優化器的優化策略肯定是從COUNT(*)開始的,阿里的SQL開發規范中也明確寫明要使用COUNT(*)。

關于MySQL中COUNT如何使用就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

眉山市| 衡水市| 洪江市| 伊吾县| 定州市| 临澧县| 海淀区| 荣昌县| 互助| 仙游县| 五台县| 普宁市| 泾源县| 建昌县| 增城市| 兰州市| 永新县| 沁阳市| 宜阳县| 浦北县| 嘉定区| 黎川县| 翁牛特旗| 应城市| 辉南县| 大港区| 镇坪县| 胶州市| 马边| 安阳县| 大洼县| 瓮安县| 舒城县| 曲靖市| 桦川县| 德保县| 河北省| 长治县| 信阳市| 儋州市| 镇巴县|