次のようなクエリがある場合
SELECT (MAX(b.A)/a.A) AS c
FROM a
INNER JOIN b
ON a.b_id = b.id
GROUP by a.id
MySQLは、すべての行に対して「MAX(bA)」の値を評価しますか、それとも1回だけ評価しますか?
パフォーマンスを改善する余地があるかどうかは、私にとって興味深いことです。
ありがとう!
アップデート
OK、実際の例に移りましょう。max-user-likesと比較したuserslikesの比例値を計算したいと思います。
users.likes(インデックス付けされている)の最大値のみを読み取るクエリは0.0003を取ります
SELECT MAX(likes)
FROM users
これで、max-user-likesの値がわかりました。たとえば、10000であるとすると、0.0007秒かかる次のようにクエリできます。
SELECT (users.likes/10000) AS weight
FROM posts
INNER JOIN users ON posts.author_id = users.id
したがって、両方のクエリを一緒にすると0.0003 + 0.0007秒のようになると予想されますが、0.3秒かかります。
SELECT (users.likes/(SELECT MAX(likes) FROM users)) AS weight
FROM posts
INNER JOIN users ON posts.author_id = users.id
それで、私のデータベースにまだ何か問題があるようです-何か提案はありますか?