ランキングのハードコーディングが必要なプロジェクトに取り組んでいます (正規化のコメントはありません)。この例には、スコアの表があります。各スコア レコードは、個人とゲームの特定の繰り返しに関連しています。人はある時点で自分のスコアを破り、複数の記録を持つ可能性があるため、ゲームのその特定の繰り返しでの最高スコアをランク付けしたいだけです。次のクエリは、個別にランク付けできるように、特定のゲーム イテレーションで各個人の最高スコアをマークするために使用されています。
以下は非常に遅いので、スピードアップしたい:
/* Define a game iteration */
SET @VarID=(can be any number from 1-200k);
/* WITHIN A game iteration RESET ALL OF THE PERSONAL BEST */
UPDATE scores m
SET m.personal_best='0'
WHERE VarID = @VarID;
/* IDENTIFY THE "BEST" (in this case the highest score per PeopleID) */
UPDATE scores m
SET m.personal_best='1'
WHERE m.ScoreID IN
(
SELECT _scoreID
FROM
(
SELECT ScoreID as _scoreID FROM scores WHERE VarID = @VarID AND NewScore = ( select max(NewScore) from scores i where i.PeopleID = scores.PeopleID AND VarID = @VarID ) ORDER BY VarID, NewScore DESC
) s
) AND VarID = @VarID;