我正在构建一个小型竞价系统,以下查询用于检索项目信息。这包括标题,所有者,对项目的出价,出价以及项目可以投放到的国家/地区。
查询使用子查询,我想通过消除这些子查询来提高运行速度。如何在没有子查询的情况下获得相同的结果?
查询中使用的表:
产品 - 包含有关项目的基本信息,如标题,描述,发布项目的用户的user_id。
用户 - 包含有关用户的信息
出价 - 包含出价。由于某个商品可以有多个出价,我想要出价最高以及其他一些出价
国家 - 此表包含可以装运物品的国家/地区以及每个国家/地区的价格
查询:
SELECT t1.id
,t1.user_id
,t1.item_title
,t1.item_number
,t1.item_start
,t1.item_description
,t1.active
,t2.first_name
,t2.last_name
,CAST(t2.fb_id AS CHAR(50)) AS fb_id
,t2.user_pic
,b.maxbid
,b.bids
,c.ship_cost
FROM items t1
LEFT JOIN users t2 ON t1.user_id = t2.id
LEFT JOIN (
SELECT item_id
,bid
,MAX(bid) AS maxbid
,COUNT(bid) AS bids
FROM bids
GROUP BY item_id
) b ON t1.id = b.item_id
JOIN (
SELECT item_id
,ship_cost
FROM countries_ship
GROUP BY item_id
) c ON t1.id = c.item_id
WHERE t1.active = 1
ORDER BY t1.id DESC LIMIT 12