简单的SQL UPDATE查询将连接速度降低5-10秒


Simple SQL UPDATE Query slows down connection by 5-10 seconds

我在MySQL Server中使用一个简单的UPDATE查询。

通常,我使用的SELECT查询会在大约瞬间返回结果。然而,在执行一次UPDATE查询之后,整个连接开始变慢,从那一刻起,加载SELECT查询的结果大约需要5-10秒。

$time = time();
$stmt = $mysqli->stmt_init();
if( $stmt = $mysqli->prepare( "UPDATE users SET last_online = ? WHERE username = ?" ) )
{
    $stmt->bind_param( 'is', $time, $_POST['username'] );
    $stmt->execute();
}
$stmt->close();

你知道为什么这会减缓联系吗?

附言:它还降低了其他用户的连接速度。

p.p.S:每个用户每13分钟执行一次更新。

编辑

当直接从MySQL执行时,速度也会减慢。

一种可能性是username上没有索引。然后,查询将需要一个完整的表扫描,从而降低速度。您可以通过以下操作创建这样的索引:

create index idx_users_username on users(username);

我发现了这个问题。SELECT查询中的一个触发了与users表组合的另一个表。该表包含大量数据,并且使用了代价高昂的ORDER BY .. DESC语句。现在问题解决了。

也许每次执行UPDATE查询时都必须更新缓存。