MYSQL COUNT(*) 和 COUNT(col_name) 的差異問題
此問題我的工作夥伴在使用
COUNT(*)後,解決了速度緩慢問題,另外他也有點無法理解為什麼這麼做速度變快...我的想法和實驗的結果跟他有些許落差,故在這裡做個筆記,若日後回顧需再額外驗證正確性...
因為這件事情,LINE群都快炸了...感謝他救了所有人
問題發生
今天晚上收到來自某個客戶的親切問候,抱怨某個有分頁列表的UI跑得十分緩慢(7秒)...
問題分析
- 這個UI畫面總共有2個SQL敘述所組成
- 取得列表資料,沒有Where條件,有limit 和 offset 敘述,有order by 敘述(依日期降冪),沒有group by敘述
- 取得總筆數數值,沒有Where條件,沒有limit 和 offset 敘述,沒有order by 敘述,沒有group by敘述僅單純使用
SELECT COUNT(Product_Name) - 資料庫引擎 InnoDB
- 資料庫總筆數約320萬筆左右
- 目前已知影響速度的問題是來自計算總筆數的SQL敘述(4~5秒)
- 我的工作夥伴使用
COUNT(*)敘述後,速度降為1秒~1.3左右秒

