1)使用LOAD DATA INFILE從文本下載數據這將比使用插入語句快20倍。
2)使用帶有多個VALUES列表的INSERT語句一次插入幾行這將比使用一個單行插入語句快幾倍。調整bulk_insert_buffer_size變量也能提高(向包含行的表格中)插入的速度。
3)可以對myisam表並行插入Concurrent_insert系統變量可以被設置用於修改concurrent-insert處理。該變量默認設置為1。如果concurrent_insert被設置為0,並行插入就被禁用。如果該變量被設置為2,在表的末端可以並行插入,即便該表的某些行已經被刪除。
4)使用插入延遲
如果你的客戶不能或無需等待插入完成的時候,這招很有用。當你使用MySQL存儲,並定期運行需要很長時間才能完成的SELECT和UPDATE語句的時候,你會發現這種情況很常見。當客戶使用插入延遲,服務器立刻返回,如果表沒有被其他線程調用,則行會列隊等待被插入。使用插入延遲的另一個好處就是從多個客戶插入的情況會被綁定並記錄在同一個block中。這將比處理多個獨立的插入要快得多。
5)插入之前將表鎖定(只針對非事務處理型的表)
這將提高數據庫性能,因為索引緩沖區只是在所有的插入語句完成後才對磁盤進行一次刷新。通常情況下,有多少個插入語句就會有多少次索引緩沖區刷新。如果你可以用一個插入語句實現所有行的插入,則無需使用顯式鎖定語句。
要想更快地對事務型表插入,你應該使用START TRANSACTION和COMMIT語句,而不是LOCK TABLES語句。