いくつかのスコア情報を保持している互いに同一の2つのテーブル(MySQL、InnoDB)があります。この2つからリーダーボードを作りたいです。表1のスコアは、表2に比べてワイト(^ 2)が多くなっています。
1つの戦略は、2つはUNIONステートメントを使用してSQLクエリを記述し、その場で結果を取得することです。もう1つは、別のテーブルを作成し、両方のテーブルからタイムリーにデータを挿入することです。(例:Cron-Job)
私の質問は、このUNIONクエリがどれくらいの費用がかかるかということです。
SELECT
username,
specialId,
SUM(correct) points,
IFNULL((SUM(foracc) / SUM(completegames)), 0) accuracy
FROM
((SELECT
u.username,
u.specialId,
POW(p.correct, 2) as correct,
p.correct as foracc, #to calcuate accuracy
p.completegames
FROM
Table_01 p
LEFT JOIN users u ON u.userid = p.userid
WHERE
p.year = 2012 AND p.type = 1) UNION (SELECT
u.username,
u.specialId,
p.correct,
p.correct as foracc, #to calcuate accuracy
p.completegames
FROM
Table_02 p
LEFT JOIN users u ON u.userid = p.userid
WHERE
p.year = 2012 AND p.type = 1)) AS Table_aggregatedscore
GROUP BY 1
ORDER BY points DESC , acc DESC
LIMIT 10;
Table_01とTable_02の両方に2,000万を超える行があります。
PS。これら2つのことをベンチマークする時間/能力がありません。