針對性效率測評 Count(*) vs limit 1,結果和你想的一樣嗎?

之前在公衆號發過一個文章SQL查找是否"存在",別再count了,很耗費時間的,文中就一個表中是否存在數據,寫出了用count 和 limit 1到底用哪個的結論,然而並沒有實際的證明。因此小夥伴之前問我能不能出一個實際的測評啊,安排。

本文僅僅針對以下兩種sql測評。

就是是否存在兩種SQL的寫法

count()
SELECT count(*) FROM table 
limit 1
SELECT 1 FROM table LIMIT 1

測評前提

引擎 : INNODB

表結構

先來看下錶結構,並沒有設置太複雜的。

explain

聰明的大家都會先explain一下,那就給大家看下。

limit 1

count

是的,相信大家看出來了,並沒什麼區別。那就實際數據開搞吧。

測評開始

第一輪測試

先插入它1000條數據看下。

count

limit 1

第二輪測試

繼續插入1萬條數據來測試。

count

limit 1

經過第二輪的測試感覺時間差不多了。繼續測。

第三輪測試

繼續第三輪插入10萬條看一下。

640

這執行已經有點卡了,我們稍微等一下,喝一杯茶(用了6分鐘)。

OK,數據到位了。再來測一下。

count

limit 1

這輪下來limit 1 佔據了上風的感覺。

第4輪測評

ok,繼續第4輪的測評,再插入10萬條吧,畢竟一次6分鐘。

count

limit 1

現在越來越傾向於limit 1了。測試繼續。

第5輪測評

繼續插入10萬條數據。

count

limit 1

第6輪測試

再插入20萬條數據。

count

limit 1

都到這了,也不能偷懶,繼續測。

第7輪測試

再插入20萬條數據。

count

limit 1

效果更加明顯了,繼續吧,那就。

第8輪測試

再插入20萬條數據。

count

limit 1

第9輪測試

最後一輪了,再插入10萬條數據。

count

limit 1

最後

其實結果已經很明顯,小編再把所有的測評結果總結到表格中,鐵證如山。

總結

理論好固然重要,理論是可以從書中學習到的,經驗可能需要我們自己去實現才能獲取到,希望這篇文章能給大家帶來一些幫助。

文章持續更新中,⛽️。另外 博主整理 + 原創 15萬字面試題,包括17個專題。歡迎大家關注“Java小咖秀”回覆“面試”即可獲得Java小咖秀面試筆記.pdf

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章