通过消除子查询来优化sql查询

时间:2015-05-19 03:21:27

标签: mysql

我正在构建一个小型竞价系统,以下查询用于检索项目信息。这包括标题,所有者,对项目的出价,出价以及项目可以投放到的国家/地区。

查询使用子查询,我想通过消除这些子查询来提高运行速度。如何在没有子查询的情况下获得相同的结果?

查询中使用的表:

产品 - 包含有关项目的基本信息,如标题,描述,发布项目的用户的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

0 个答案:

没有答案