2015-08-08 84 views
0

我是一個初學者在php/sql(6個月),我注意到 - 交易比純粹的「插入」更快。sqlite + php - 正確和最快的方式與循環做交易

當我使用大量數據(範圍:10-500k插入)時,我注意到我的腳本很慢。

目標:我想做最快的方式將數據保存到sqlite * .db文件。

我的腳本看起來像這樣:

$array = array(
    'ronaldo' => 'gay' , 
    'mario basler' => 'cool guy' 
); 

$db = new Sqlite3('file.db') 
$db->query('BEGIN;'); 

foreach($array as $kee => $val){ 
    $db->query("insert into table('name' , 'personality') values('$k' , '$v')"); 
} 

$db->query("COMMIT"); 

是這樣有錯嗎?

回答

1

你所做的是絕對正確的。它會加快你與數據庫的交互。任何更改數據庫的命令都會自動開始一個事務,如果其中一個尚未生效。

因此,如果您在沒有明確啓動事務的情況下執行許多插入操作,那麼對於每個操作都將創建一個事務。您創建1個交易並批量執行所有操作。

How to insert 40000 records fast into an sqlite database in an iPad

https://www.sqlite.org/lang_transaction.html