Php 如何提高sql插入速度

Php 如何提高sql插入速度,php,mysql,sql,Php,Mysql,Sql,在一个事务中插入所有内容,大大加快了时间 像 mysql\u查询('START TRANSACTION',$link); 对于($i=0;$i

在一个事务中插入所有内容,大大加快了时间

mysql\u查询('START TRANSACTION',$link);
对于($i=0;$i<20;++$i)
{ 
mysql_查询(“插入到主分隔符(case_number)值(“$s”)”,$link);
}
mysql_查询('COMMIT',$link);

请参见幻灯片52,您可以尝试做的一件事是分批插入。支持以下内容:

mysql_query('START TRANSACTION', $link); 
for ($i = 0; $i < 20; ++$i) 
{ 
   mysql_query("INSERT INTO master_break (case_number) VALUES('$s')", $link);
}
mysql_query('COMMIT', $link); 
尝试使用越来越大的批量,直到找到适合自己的产品

INSERT INTO master_break (case_number) VALUES (123), (456), ...
如果您只需要唯一的,请添加一个独特的:

Insert into master_break(case_number) 
(select case_number from master)

您可以在手册中阅读这方面的内容,特别是关于、、和禁用/启用键的内容。

使用准备好的语句,并将它们全部填充到事务中。i、 e:

   Insert into master_break(case_number) 
    (select distinct case_number from master)

这样,您也可以避免SQL注入。

这段代码应该做什么?我有两个表,分别称为master和master\u break。主表包含名为case_number和box的字段。。我需要使用主值创建主分解表。。。此查询会消耗更多的时间和内存。如何提高执行速度是唯一明智的答案。这里不需要使用慢循环。(但选择框周围的括号不是必需的)
   Insert into master_break(case_number) 
    (select distinct case_number from master)
$pdoHandler->beginTransaction();
for (whatever) {
    $query = $pdoHandler->prepare(whatever);
    $query->bindParam(whatever);
    $query->execute();
}
try {
    $pdoHandler->commit();
} catch(PDOException $e) {
    do whatever;
}