我正在研究一個迄今爲止擁有7000多行排行榜數據的項目,其中包含名稱,ID,分數和排名。它不斷擴大,我目前遇到了一個麻煩,在每次有人發佈新評分時嘗試更新所有內容後,服務器超時。用mySQL更新1000行的最有效方法?
目前我正在使用PDO查詢結合循環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