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