真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

MySQL中COUNT如何使用

這篇文章將為大家詳細(xì)講解有關(guān)MySQL中COUNT如何使用,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

創(chuàng)新互聯(lián)建站主要從事網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)銀海,10多年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來(lái)電咨詢建站服務(wù):028-86922220

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

MySQL的COUNT

對(duì)于傳統(tǒng)的存儲(chǔ)引擎InnoDb而言,存儲(chǔ)一個(gè)表的精確行數(shù)是十分困難的,因?yàn)槎嗍聞?wù)操作可能會(huì)并發(fā),并且同時(shí)影響表的行數(shù),所以為了避免并發(fā)線程查詢同一個(gè)表而得到不同的行數(shù),InnoDb沒(méi)有對(duì)表的行數(shù)進(jìn)行內(nèi)部存儲(chǔ),所以在InnoDb中,SELECT(*)僅僅返回當(dāng)前事務(wù)所讀取到的行數(shù)。在MySQL5.7.18之前,InnoDb通過(guò)掃描聚簇索引來(lái)處理SELECTCOUNT(*)語(yǔ)句,5.7.18之后InnoDb使用最小且可用的第二索引來(lái)處理SELECTCOUNT(*)語(yǔ)句(除非查詢優(yōu)化器提示使用一個(gè)其他的索引)。如果沒(méi)有第二索引,那么需要掃描聚簇索引。

如果索引記錄沒(méi)有全部在緩沖池中,那么處理SELECTCOUNT(*)語(yǔ)句是需要耗費(fèi)一些時(shí)間的。如果需要追求一個(gè)快速的計(jì)算,那么可以在應(yīng)用中單獨(dú)設(shè)計(jì)一個(gè)表用于在目標(biāo)表進(jìn)行插入或刪除操作時(shí)記錄其數(shù)據(jù)條數(shù)。然而,在大量的并行處理來(lái)update目標(biāo)表的計(jì)數(shù)器表時(shí)會(huì)很難擴(kuò)展。如果可以SHOWTABLESTATUS語(yǔ)句來(lái)獲取該信息。

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

對(duì)于MyIsam引擎,COUNT(*)在沒(méi)有WHERE子句的情況下是非??斓模?yàn)樵贛yIsam引擎中,表的精確行數(shù)會(huì)被保存下來(lái)。如果MyIsam表的第一列被設(shè)置為非空,那么COUNT(1)具有同樣的優(yōu)化效果(在對(duì)于100w條含有非空的簡(jiǎn)單數(shù)據(jù)進(jìn)行COUNT(*)與COUNT(1)的對(duì)比測(cè)試沒(méi)有明顯發(fā)現(xiàn)性能差異)。

COUNT的規(guī)范

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

對(duì)于COUNT(*)相比COUNT(常量)而言,COUNT(*)是SQL92中定義的標(biāo)準(zhǔn)統(tǒng)計(jì)行數(shù)的語(yǔ)法,所以許多數(shù)據(jù)庫(kù)對(duì)其進(jìn)行優(yōu)化,對(duì)于MySQL而言,COUNT(常量)也是轉(zhuǎn)換為COUNT(*)執(zhí)行的,標(biāo)準(zhǔn)語(yǔ)法優(yōu)先使用COUNT(*),因?yàn)楦鱾€(gè)數(shù)據(jù)庫(kù)查詢優(yōu)化器的優(yōu)化策略肯定是從COUNT(*)開(kāi)始的,阿里的SQL開(kāi)發(fā)規(guī)范中也明確寫(xiě)明要使用COUNT(*)。

關(guān)于MySQL中COUNT如何使用就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。


當(dāng)前名稱:MySQL中COUNT如何使用
分享路徑:http://www.weahome.cn/article/ihjjhs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部