我的表看起来像这样
表1:
relid BID
1 1
1 2
1 3
表2:
id BID priority info
1 1 0 Json string
2 1 1 **
3 1 2 ****
4 2 0 ***
5 2 1 ****
6 3 0 ****
问题是我想使用{strong> table1 选择 table1 中仅具有最高优先级的所有BID,这意味着我想获得这个结果
inner join
我已经使用过这个查询,它运行正常,但是有大量的记录,它的运行速度太慢!!在 MySQL 中,抓取时间可能会持续长达70秒,这对我的服务器来说是一场灾难!
id BID Priority info
3 1 2 Json String info
5 2 1 ***
6 3 0 ***
任何人都有其他建议,可能会有更好的表现!
答案 0 :(得分:0)
请考虑以下事项:
SELECT y.id
, y.bid
, y.priority
, y.info
FROM table1 x
JOIN table2 y
ON x.BID = y.BID
JOIN (SELECT bid, MAX(priority) max_priority from table2 GROUP BY bid) z
ON z.bid = y.bid
AND z.max_priority = y.priority
WHERE x.relid = 1;
为了进一步改进,我们确实需要查看所有相关表的正确CREATE TABLE语句以及EXPLAIN的结果