MySQL更新需要很长时间

时间:2016-03-09 20:01:12

标签: php mysql mysqli

我在function rev(me, droppable) { ... droppable.droppable("option", "disabled", false); } 用户表中有大约230K条记录,我正在通过MySQL更新14K用户信息,并使用简单php来自变量并使用{{ 1}}查询以更新foreach用户的列。我需要update来运行查询。首先,我需要14K分钟来更新大约1 hour, 9 min approx,然后再用13分钟更新剩余的记录。

enter image description here

这是常见的还是我需要升级我的系统,我正在运行。我有1100 records并使用56

如果这是常见的,那么大公司在mysql中以最快的方式处理如此或更大数量的用户记录的最佳方式是什么?

以防万一,如果有人需要知道运行的确切代码。

8GB RAM, i5 processor 2nd gen

1 个答案:

答案 0 :(得分:1)

您可以使用准备好的查询加快速度,因此只需要解析一次查询。

$stmt = $mysqli->prepare("UPDATE user_table SET col_name = ? WHERE id = ?");
$stmt->bind_param("si", $col_name, $id);
foreach ($_SESSION['tupple'] as $value) {
    $col_name = $value['col_name'];
    $id = $value['id'];
    $stmt->execute();
}

另外,如果您正在使用InnoDB,请在循环之前启动事务,并在结束时提交它。

$mysqli->begin_transaction(MYSQLI_TRANS_START_READ_WRITE);
// above loop
$mysqli->commit();

还可以在单​​个查询中更新多行:

UPDATE user_table
SET col_name = CASE id
    WHEN $id1 THEN '$name1'
    WHEN $id2 THEN '$name2'
    WHEN $id3 THEN '$name3'
    ...
END
WHERE id IN ($id1, $id2, $id3, ...)

您可以使用此类语法将$_SESSION['tupple']中的多个条目分组为批次。