我们的 PHP 代码中有一个循环,用于将行插入到表中。例如:
while ($info = mysql_fetch_assoc($someQuery)) {
mysql_query("INSERT INTO X (i,j) VALUES ($info['ii'],$info['jj'])");
}
这在几个月前还不错,因为循环只会迭代几次。然而,由于我们的网站获得更多流量,这个循环现在有时会迭代 1000 次或更多次。该表有一些 overhead (4,305 KiB) 和此表中的 SELECT 出现在 MySQL slow-log 中,可能是因为他们不得不等待一长串 INSERT 来释放锁?
我应该如何优化代码才能更好地扩展?
我认为我可以尝试的一些事情:
- INSERT DELAYED - 需要调查一下。有帮助吗?
- 尝试在同一查询中插入多行。但是我应该设置什么限制? 50、500、1000?
最佳答案
什么是$someQuery?你能用INSERT ... SELECT吗语法?
关于php - 如何以可扩展的方式执行多个 MySQL INSERT (PHP),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2153760/