bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

MySQL中COUNT如何使用-創新互聯

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

10年積累的網站制作、成都網站設計經驗,可以快速應對客戶對網站的新想法和需求。提供各種問題對應的解決方案。讓選擇我們的客戶得到更好、更有力的網絡服務。我雖然不認識你,你也不認識我。但先制作網站后付款的網站建設流程,更有綠春免費網站建設讓你可以放心的選擇與我們合作。

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如何使用就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

分享文章:MySQL中COUNT如何使用-創新互聯
本文地址:http://vcdvsql.cn/article24/dgddje.html

成都網站建設公司_創新互聯,為您提供自適應網站網站制作企業網站制作品牌網站設計微信公眾號營銷型網站建設

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都seo排名網站優化