2020-03-01
專注于為中小企業(yè)提供網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)滎陽免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了千余家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
對于count的函數(shù)的使用,我們常見的一個(gè)錯(cuò)誤是在括號(hào)內(nèi)隨意指定一個(gè)列去統(tǒng)計(jì)結(jié)果集的行數(shù)。但只有指定的行確實(shí)都是有值的時(shí)候,統(tǒng)計(jì)的才是實(shí)際的行數(shù),否則可能統(tǒng)計(jì)的結(jié)果并不是實(shí)際的行數(shù)。而對于MyISAM存儲(chǔ)引擎,如果某一列的值確實(shí)不可能為null時(shí),MySQL內(nèi)部就會(huì)將count()函數(shù)優(yōu)化成count(*),若沒有帶where條件,此時(shí)計(jì)算速度是非常快的,因?yàn)榇藭r(shí)沒有實(shí)際的去計(jì)算表的行數(shù)。
總結(jié): 對于MyISAM存儲(chǔ)引擎,不帶where條件的count(*)是非??斓?。
技巧:
利用上述MyISAM的count(* )特性,加速一些特定查詢條件的count()查詢。
如:
對于select count(* ) from tablename where id 10; 可以做如下的反轉(zhuǎn)查詢:
select (select count(* ) from tablename) - count(* ) from tablename where id 10;
因?yàn)檫@樣在查詢階段MySQL將子查詢當(dāng)做一個(gè)常數(shù)來處理,大大減少了掃描的行數(shù)。
用count(*)函數(shù)來統(tǒng)計(jì),返回匹配指定條件的行數(shù)。
例如有個(gè)表名稱為demos,那么統(tǒng)計(jì)行數(shù)可以寫:select count(*) ?from demos;
后面可以加限制條件,例如統(tǒng)計(jì)val大于3的記錄行數(shù):select count(*) ?from demos where val3;
擴(kuò)展資料:
MySQL COUNT(*)
The?COUNT(*)?function returns the number of rows in a result set returned by a?SELECT statement. TheCOUNT(*)?function counts rows that contain no-NULL and NULL values.
COUNT(*) 語法
SELECT COUNT(*) FROM table_name;
參考資料:MySQL官網(wǎng)-MySQL COUNT
統(tǒng)計(jì)所有記錄的數(shù)量:
SELECT COUNT(*) FROM table_name
統(tǒng)計(jì)某列的數(shù)量:
SELECT COUNT(column_name) FROM table_name
where 條件