我有一个大约有4000个名字的数据库表。我需要读入它们,循环浏览它们,并在另一个表中创建条目,其中包含这些名称以及用户输入的id。可能有20个身份证。我已经写了这段代码,但如果在三分钟后仍在运行,所以我停止了它。我希望有一个方法来编码它,以减少时间。它将在一个最大执行时间为60秒的共享服务器上运行,因此所需时间不会超过60秒。这是我有的。有人能想出提高速度的办法吗?
$mysql_query = "select id from main_table";
$post = array('0' => 1, '1' => 2); //up to 20 entries
$cnt = count($post);
$str = '';
while ($item = mysql_fetch_array($mysql_query)) {
for ($i = 0; $i < $cnt; ++$i) {
$str .= "('" . $item['id'] . "', '" . $post[$i] . "'),";
}
}
$str = substr($str, 0 -1);
mysql_query("insert into next_table values" . $str );
3条答案
按热度按时间ss2ws0br1#
如果您找不到其他解决方案来减少执行时间,即任何类型的优化,那么您可以尝试一次减少正在处理的记录数。
在执行时间限制内可以处理的id数量的do块。
然后调用脚本的次数与等待处理的数据的次数相同。
qgzx9mmu2#
这里有一个完全不需要php循环和字符串连接的解决方案。但是您仍然需要php代码(作为练习)来转换:
对此:
这是您需要执行的一个查询:
扰流器:
6jjcrrmo3#
这是基于salman a的答案的新代码。大约需要3秒钟才能完成。杰出的。我正在发布新代码,以防有人在某个时候需要它。