InnoDB 不鎖表掃描聚合,並發下 COUNT(*) 返回近似值。精確計數需維護計數表或用 SELECT COUNT(1) FROM t WHERE id > last_id 分頁統計。
開發環境數據量小掩蓋全表掃描、鎖爭用、臨時表溢寫磁盤等問題。上線前必須用生產級數據量(百萬/千萬行)跑真實負載測試。
EXPLAIN 確認 type=ALL 即全表掃描,優化目標達到 ref/range/eq_ref。實例:SELECT emp_id FROM awesome_pcq WHERE email_id='x' AND password='y' AND deleted=0
EXPLAIN SELECT ... -- 關注 rows 列:100 行 → 全表掃描
ALTER TABLE awesome_pcq ADD INDEX idx_login (email_id);
EXPLAIN SELECT ... -- rows=1 → 索引命中
索引列順序不影響優化器選擇,但聯合索引需遵循最左前綴。
ANALYZE TABLE 更新統計信息,防止優化器誤判。Handler_read_rnd_next 暴增 → 疑似全表掃描。