[英]Optimize query with subquery and join
我的查詢
SELECT a.* FROM hm_all a
JOIN ( SELECT post_id, MIN(priceUS_USD) as price FROM hm_all GROUP BY post_id ) b
ON a.post_id = b.post_id AND a.priceUS_USD = b.price
ORDER BY a.post_id ASC LIMIT 0,20
解釋
id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra
1 PRIMARY a index post_id post_id 4 NULL 1 Using where
1 PRIMARY <derived2> ref key0 key0 9 a.po. 10
2 DERIVED hm_all index NULL post_id 4 NULL 12112
查詢工作正常但速度很慢。 我想知道怎么加速?
我建議將其編寫為相關子查詢:
select a.*
from hm_all a
where a.priceUS_USD = (select min(a2.priceUS_USD)
from hm_all a2
where a2.post_id = a.post_id
)
order by a.post_id
limit 20;
然后為了性能,您需要hm_all(post_id, priceUS_USD)
上的索引。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.