如果我有类似的查询
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)”的值还是只评估一次?
我感兴趣的是是否有性能改进的空间。
谢谢!
更新
好的,让我们继续看一个真实世界的例子:我想计算用户喜欢与最大用户喜欢的比例值。
仅读取 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
所以我的数据库似乎仍然有问题 - 有什么建议吗?