語法
SELECT SQL_BUFFER_RESULT ... FROM ...
運作機制
- 強制 MySQL 將結果集先寫入臨時表(記憶體或磁碟)。
- 臨時表建立完成後,立即釋放所有表鎖。
- 客戶端再從臨時表慢速讀取結果,不再阻塞其他查詢。
適用場景
- 結果集極大,網路傳輸耗時長,導致表鎖長時間持有。
- 高併發環境下,避免長查詢阻塞寫入操作。
- 需盡快釋放鎖資源,犧牲少量臨時表建立開換取併發度。
注意事項
- 臨時表可能寫入磁碟(超過
tmp_table_size/max_heap_table_size),產生額外 I/O。
- 不適用於
LIMIT 只取前幾行的查詢(會多做無用功)。
- 僅作為戰術性優化,根本解決仍需索引、分頁、縮小結果集。