我有一个PHP脚本,它循环遍历数组,每次传递都调用一个MySQL存储函数。
这严重影响了服务器性能。我觉得我的设计很糟糕。这就是它的工作方式(伪代码)。
MySQL存储函数
试图解决它,
请分享你的建议和经验。伪代码或代码片段也将不胜感激,提前感谢!
发布于 2013-11-13 21:21:01
减少查询次数总是很好的。在其最基本的形式中,可以一次插入多个行。
// BAD:
while($something) {
mysql_query("insert into `table` (`fields`) values ('value')");
}
// GOOD:
$rows = [];
while($something) {
$rows[] = "('value')";
}
if( $rows) mysql_query("insert into `table` (`fields`) values ".implode(",",$rows));更新会变得更棘手,但它仍然有效:
// BAD:
while($something) {
mysql_query("update `table` set `field`='value' where `id`=".$i);
}
// GOOD:
$rows = [];
while($something) {
$rows[] = "(".$i.",'value')";
}
if( $rows) mysql_query("insert into `table` (`id`,`fields`) values
".implode(",",$rows)." on duplicate key update `fields`=values(`fields`)");
// ^ this is where the magic happens.看看您是否可以将这种结构应用于您的查询,您应该看到加载时间大大缩短,以获得更快的体验!
https://stackoverflow.com/questions/19964219
复制相似问题