为什么这个MySQL查询会减慢我的代码速度

Chi*_*ory 1 php mysql query-optimization

目前我在PHP中运行MySQL查询,在查看结果时我更新了原始表,但是一个包含500行的简单表需要30秒才能完成:

$sqlquery = mysql_query('SELECT id, special_data FROM stats_visits WHERE processed = 0');
while($row = mysql_fetch_assoc($sqlquery)){ 
    $stat_id = $row['id'];
    // Make use of special_data field for some operations
    mysql_query('UPDATE stats_visits SET processed = 1 WHERE id = ' . $stat_id);
}
Run Code Online (Sandbox Code Playgroud)

是因为我正在更新我选择的表吗?我通过执行以下操作解决了这个问题,但由于该表可能在将来有数千条记录,我不确定IN将如何保持:

$statids = array();

$sqlquery = mysql_query('SELECT id, special_data FROM stats_visits WHERE processed = 0');
while($row = mysql_fetch_assoc($sqlquery)){ 
    $statids[] = $row['id'];
    // Make use of special_data field for some operations
}

mysql_query('UPDATE stats_visits SET processed = 1 WHERE id IN(' . implode(',', $statids) . ')');
Run Code Online (Sandbox Code Playgroud)

Mad*_*iha 6

如果你想要的只是更新所有记录processed = 1为什么不用一个查询解决它?:

UPDATE `stats_visits` SET `processed` = 1 WHERE `processed` = 0;
Run Code Online (Sandbox Code Playgroud)