如果我有一个将数据插入到mysql表中的循环,我是否将查询回显到屏幕上会减慢脚本的速度以至于产生显着影响?
for ($a=1;$a<=10000;$a++){
$ins = "INSERT into (number) values (".$a.")";
$stmt = $db->query($ins);
echo $ins."\n";
}
答案 0 :(得分:1)
实际上,对于您的情况,回显不是很费时,但是在迭代中插入单个列值(例如10K次)则比较耗时,对于您来说,在循环中为一列插入10K行。您可以像这样用单个查询插入多行-
FORCE ORDER
使用MYSQL,您可以包括多个列值列表,每个列表值都包含在内 在括号内并用逗号分隔
更具体地说,像这样的东西-
INSERT INTO number(a) VALUES (4),(6),(7);
答案 1 :(得分:0)
实际上,在10000
迭代中插入10000
行将花费时间而不是echo
查询。
我建议您将值存储到如下数组中:
<?php
$yourArray = array();
for ($a=1;$a<=10000;$a++){
$yourArray[] = $a;
}
?>
然后,在循环外使用implode()
来输入逗号分隔的值
<?php
$yourQuery = "INSERT into (number) values ";
$yourQuery .= "("; // for starting bracket
$yourQuery .= implode("),(",$yourArray);
$yourQuery .= ")"; // for ending bracket
?>