求大神帮忙优化一条SQL语句(多表查询,每个inner join都是一个查询条件)给100分,效果好的再加分

2025-04-27 15:31:56
推荐回答(1个)
回答1:

改变一下inner join顺序试试呢看另外现在有哪些索引看
tim_spac说的没错,并没有使用表goods_color和goods_size中的其它字段,size_id和color_id在表goods_sku中都有,可以不用join这两个表,除非为了数据一致性或取得相关的其它字段。

    SELECT g.goods_id,g.goods_sn,g.goods_name,gc.color_id,gz.size_id,
           gu.sku_id,gu.sku
      FROM encm_products_goods a
INNER JOIN goods_sku gu on gu.goods_id = a.goods_id
INNER JOIN goods_color gc ON gc.color_id=gu.color_id
INNER JOIN goods_size gz ON gz.size_id=gu.size_id
INNER JOIN goods g ON g.goods_id=gu.goods_id
     WHERE 1 AND a.products_id=1
  GROUP BY g.goods_id,gc.color_id,gz.size_id
  ORDER BY g.goods_id DESC, gc.color_id ASC, gz.size_id ASC