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;
}