執行 INSERT 操作的時候,可以考慮使用以下的方式優化 SQL 的執行效率:
- 如果你同時從同一客戶插入很多行,使用多個值表的 INSERT 語句。這比使用分開 INSERT 語句快。 1 Insert into test values(1,2),(1,3),(1,4) …
- 如果你從不同客戶插入很多行,能通過使用 INSERT DELAYED 語句得到更高的速度。 Delayed的含義是讓 INSERT 語句馬上執行,其實數據都被放在內存的隊列中,並沒有真正寫入磁盤;這比每條語句分別插入要快的多; LOW_PRIORITY 剛好相反,在所有其他用戶對表的讀寫完後才進行插入;
- 將索引文件和數據文件分在不同的磁盤上存放;
- 如果進行批量插入,可以增加 bulk_insert_buffer_size 變量值的方法來提高速度,但是,這只能對 MyISAM 表使用;
- 當從一個文本文件裝載一個表時,使用 LOAD DATA INFILE。這通常比使用很多 INSERT 語句快 20 倍;
- 根據應用情況使用 REPLACE 語句代替 INSERT ;
- 根據應用情況使用 IGNORE 關鍵字忽略重復記錄。