mysql count里面能加条件吗_select count(1) 和 count(*),哪个性能更好?
相信很多小伙伴都想了解 count(1) 和 count(*) 的性能問(wèn)題 ,今天給大家做一下測(cè)試。
聲明:本文使用MySql數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)表里面有100萬(wàn)條數(shù)據(jù)。
先測(cè)試 count(*)
可以看出,count(*) 用時(shí)間差不多15s.
再測(cè)試 count(1)
看到這個(gè)數(shù)據(jù),我知道很多小伙伴還是找不到心里的答案,上面的測(cè)試會(huì)不會(huì)存在一些客觀原因,所以重啟電腦后,重新測(cè)試一下 count(1)
這次用時(shí)34s,是不是很驚訝?
下面看看在穩(wěn)定狀態(tài)下的性能對(duì)比
第一次 count(*) 5.49s
count(1) 5.11s
別著急,俗話(huà)都是三局兩勝,五局三勝。
第二次 count(*) 4.86s count(1) 5.64s
第三次 count(*) 4.92s count(1) 4.39s
第一個(gè)總結(jié)
從上面的比較可以看出,count(*) count(1) 在沒(méi)條件的情況下兩者沒(méi)有什么區(qū)別。
下面使用有條件的 select 進(jìn)行對(duì)比
對(duì)比了兩次,可以看出count(*) 快于count(1), 下面來(lái)解釋一下
count(1) 和count(*) 對(duì)比
如果你數(shù)據(jù)庫(kù)沒(méi)有主鍵,那么count(1) 比count(*) 快,
如果有主鍵作為條件count(),那么count(1) 比count(*) 快。
如果表里面只有一個(gè)字段,那么還是count(*)最快
count 解釋
count(*) 返回表中所有存在行的總數(shù),包括null
count(1) 返回的是去除null以外的所有行的總數(shù),有默認(rèn)值的也會(huì)被記錄
感興趣的同學(xué),可以動(dòng)手測(cè)試一下
三條經(jīng)驗(yàn)
這個(gè)也是好久之前在網(wǎng)上看到的
- 任何情況下select count(*) from table 是最優(yōu)選擇
- 減少select count(*) from table where condition = ? 這樣的查詢(xún)
- 杜絕 select count(colunm) from table
我目前是在職Java開(kāi)發(fā),如果你現(xiàn)在正在了解Java技術(shù),想要學(xué)好Java,渴望成為一名Java開(kāi)發(fā)工程師,在入門(mén)學(xué)習(xí)Java的過(guò)程當(dāng)中缺乏基礎(chǔ)的入門(mén)視頻教程,你可以關(guān)注并私信我:01。我這里有一套最新的Java基礎(chǔ)JavaSE的精講視頻教程,這套視頻教程是我在年初的時(shí)候,根據(jù)市場(chǎng)技術(shù)棧需求錄制的,非常的系統(tǒng)完整。
總結(jié)
以上是生活随笔為你收集整理的mysql count里面能加条件吗_select count(1) 和 count(*),哪个性能更好?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python组合数据类型实验_实验七 组
- 下一篇: 直接点oracle表编辑器,DbForg