我的table看起来像这样
表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 ****
问题是,我想选择所有出价的最高优先级只有从表2使用 inner join
对于表1,这意味着我想要得到这个结果
id BID Priority info
3 1 2 Json String info
5 2 1 ***
6 3 0 ***
我用过这个查询,它工作得很好,但是对于大量的记录,它工作得太慢了!!在mysql中,抓取时间可能长达70秒,这对我的服务器来说是一场灾难!!!
select * from table1 inner join table2 on table1.BID = table2.BID where table1.relid = 1 and table2.priority = (select max(priority) as m from table2 where table1.BID = table2.BID)
任何人都有其他的建议,可以更好的工作性能!
1条答案
按热度按时间pgx2nnw81#
考虑以下几点:
对于进一步的改进,我们确实需要看到所有相关表的正确create table语句以及explain的结果