【发布时间】:2015-05-04 16:49:17
【问题描述】:
我需要一些帮助来优化我的查询
我有两张桌子
表 1 - users_location; 表 2 - users_rating
+-------+---------+ +-------+--------+
|user | location| | user | rating |
+-------+---------+ +-------+--------+
| user1 | AA | | user1 | 1 |
| user2 | BB | | user1 | 3 |
| user3 | CC | | user1 | 4 |
| user4 | AA | | user2 | 3 |
| user5 | BB | | user4 | 2 |
| user6 | CC | | user4 | 4 |
我需要按位置选择用户及其平均评分(例如 AA)。 现在我的查询是:
SELECT *
FROM users_loaction AS TABLE1
LEFT JOIN (
SELECT
user,
AVG(rating)
FROM users_rating group by user
) AS TABLE2
ON TABLE1.user = TABLE2.user
WHERE TABLE1.location = AA
我认为 SQL 会计算所有用户的平均评分,然后只加入我需要的,这不是优化的。
【问题讨论】:
标签: mysql sql-server performance optimization query-optimization