日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql count里面能加条件吗_select count(1) 和 count(*),哪个性能更好?

發布時間:2024/7/19 数据库 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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(*),哪个性能更好?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。