爲什麼不把它作爲單個查詢運行?
$SQL = "INSERT INTO mytable2 (col1,col2) SELECT val1,val2 FROM mytable";
$query = mysql_query($SQL);
備選
你也可以扼殺你的INSERT 200同時
$query = mysql_query("SELECT * FROM mytable");
$commit_count = 0;
$commit_limit = 200;
$comma = "";
$SQL = "INSERT INTO mytable2 (col1, col2) VALUES ";
while($row = mysql_fetch_assoc($query)){
$SQL .= $comma . "('".$row['val1']."','".$row['val2']."')";
$comma = ",";
$commit_count++;
if ($commit_count == $commit_limit)
{
mysql_query($SQL);
$SQL = "INSERT INTO mytable2 (col1, col2) VALUES ";
$commit_count = 0;
$comma = "";
}
}
if ($commit_count > 0) { mysql_query($SQL); }
您可以將$commit_limit
更改爲任何正數是合理的。
你嘗試使用flush嗎? – 2012-04-10 17:14:32
@GabrielGartz:你能給我一個如何實施的工作例子嗎? – kylex 2012-04-10 17:15:37
我喜歡RolandoMySQLDBA解決方案,但您也可以在循環語句中回顯某些內容並使用http://br.php.net/manual/en/function.flush.php – 2012-04-10 17:20:16