2015-08-08 40 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