之前在公衆號發過一個文章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萬條看一下。
這執行已經有點卡了,我們稍微等一下,喝一杯茶(用了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