Я работаю над проектом, который до сих пор имеет 7000 + строк данных таблицы лидеров, который содержит имя, идентификатор, оценку и рейтинг. Он постоянно расширяется, и я в настоящее время попал в ловушку, в которой сервер время от времени, пытаясь обновить все каждый раз, когда кто-то публикует новый балл.Самый эффективный способ обновления 1000 строк с помощью mySQL?
В настоящее время я использую PDO с запросом в сочетании с вызовом looped execute(). Есть ли более быстрый способ сделать это (возможно, в одном запросе mySQL)? В качестве альтернативы, есть ли у вас какие-либо предложения по обработке обновленной таблицы лидеров?
$stmt = $dbh->prepare("SELECT * FROM high_scores ORDER BY score DESC");
$stmt->execute();
$stmt->setFetchMode(PDO::FETCH_ASSOC);
$results = $stmt->fetchAll();
//
$numItems = count($results);
// is this OK or a no-no?
try {
$stmt = $dbh->prepare("UPDATE high_scores SET rank = :rank WHERE uid = :uid");
for($i=0; $i<$numItems; $i++){
$rank = $i + 1;
$uid = $results[$i]['uid'];
$stmt->execute(array(':rank' => $rank, ':uid' => $uid));
}
return true;
} catch (PDOException $e) {
echo($e->getMessage());
}
Это была отличная помощь, спасибо. – maskedbacon