站內搜尋

Monday, July 25, 2016

[SQLite][MYSQL][PHP] 如何在迴圈 快速新增多筆資料 (fast multi insert) (使用Transaction交易模式,多筆query一次commit)

SQLite 有支援一次多筆insert的語法,但時候我們受限於PHP程式而必需在迴圈中一筆一筆的執行 SQL 的 insert,少量資料這樣做是OK的,但當資料筆數過多(例如超過一萬筆),就必需使用一個小技巧,方法很簡單...

$pdo->beginTransaction();
foreach ($arr as $v) {
  $pdo->exec("INSERT INTO ...");
}

$pdo->beginTransaction();

使用Transaction交易模式,多筆query一次commit,只要加上兩行程式,就可以讓 insert 的時間縮短好幾倍喔。

備註:這個方法也可以同時套用在 MYSQL 上,只是要注意儲存引擎不可以是"MyISAM",因為它不支援交易模式。

No comments:

Post a Comment