MySQL 9.0 版本注意事項
為了最佳化插入速度,請將許多小型操作合併為單一大型操作。理想情況下,您建立單一連線,一次傳送許多新列的資料,並延遲所有索引更新和一致性檢查,直到最後。
插入一列所需的時間取決於以下因素,其中數字表示大約比例
連線:(3)
傳送查詢到伺服器:(2)
剖析查詢:(2)
插入列:(1 × 列的大小)
插入索引:(1 × 索引數量)
關閉:(1)
這不考慮開啟資料表的初始額外負荷,每個並行執行的查詢都會執行一次。
假設 B 樹索引,資料表的大小會使索引插入速度減慢 log N
。
您可以使用下列方法加速插入
如果您同時從同一個用戶端插入多列,請使用具有多個
VALUES
清單的INSERT
語法,一次插入多列。這比使用單獨的單列INSERT
語法快得多(在某些情況下快很多倍)。如果您要將資料新增到非空的資料表,您可以調整bulk_insert_buffer_size
變數,使資料插入更快。請參閱第 7.1.8 節,「伺服器系統變數」。當從文字檔案載入資料表時,請使用
LOAD DATA
。這通常比使用INSERT
語法快 20 倍。請參閱第 15.2.9 節,「LOAD DATA 語法」。利用欄位具有預設值的事實。只有在要插入的值與預設值不同時,才明確插入值。這減少了 MySQL 必須執行的剖析,並提高了插入速度。
有關
InnoDB
資料表的特定提示,請參閱第 10.5.5 節,「InnoDB 資料表的大量資料載入」。有關
MyISAM
資料表的特定提示,請參閱第 10.6.2 節,「MyISAM 資料表的大量資料載入」。