壓箱底優化清單,涵蓋存儲引擎選型、索引策略、SQL 改寫、架構擴展、運維細節。每條配合理由,適合作團隊編碼規範附件。
EXPLAIN 看 type=ALL 必優化WHERE、ORDER BY、JOIN ON 列建索引,但**索引非越多越好**(寫入開銷)NOT NULL DEFAULT '',NULL 難優化、佔額外位圖、統計函數行為異常CHAR、變長 VARCHAR,節省空間 = 節省 I/OINT vs BIGINT、DATETIME vs TIMESTAMP,命名語義化IN/UNION/範圍查詢query_cache_type=1(5.7 廢用,8.0 移除),高更新表慎用LIKE 'abc%' 走索引,%abc% 全掃,考慮全文索引/ESWHERE YEAR(dt)=2024 → WHERE dt >= '2024-01-01' AND dt < '2025-01-01'BETWEEN,優化器更易走範圍掃描SELECT *,減少網絡/內存/回表開銷DELETE 逐行記錄 Undo,TRUNCATE 直接釋放頁(DDL,不可回滾)PreparedStatement,省解析編譯try-with-resources、連接/Statement/ResultSet 關閉DELETE/INSERT 分批 LIMIT 1000,事務小、鎖時間短rewriteBatchedStatements=true、executeBatch(),減少網絡往返usleep(1000) 讓出 CPU/IO,避免把庫打掛pt-index-usage、pt-duplicate-key-checkerpt-query-digest、mysqldumpslowpt-online-schema-change、gh-ostxtrabackup、mysqlbackupPrometheus + mysqld_exporter、PM2測試驗證 > 經驗主觀,數據說話 > 感覺判斷。 每次優化前後必跑 EXPLAIN、SHOW PROFILE、壓測對比。