为了账号安全,请及时绑定邮箱和手机立即绑定

mysql 语句查询 优化

mysql 语句查询 优化

墨色风雨 2019-04-10 20:48:48
order表字段:order_id,product_id查询购买产品A的订单同时会购买哪些产品SELECTprodcut_id,COUNT(*)ASnumsFROMorderLEFTJOIN(SELECTorder_idFROMorderWHEREproduct_id=100)ASorder_bONorder_b.order_id=order.order_idWHEREorder_b.order_idISNOTNULLGROUPBYproduct_idORDERBYnumsDESCoder_id,prodcut_id已做索引请问如何优化以上查询语句?
查看完整描述

2 回答

?
慕田峪7331174

TA贡献1828条经验 获得超13个赞

用JOIN替换掉LEFTJOIN:
SELECTprodcut_id,COUNT(*)ASnums
FROMorder
JOIN(
SELECTorder_id
FROMorder
WHEREproduct_id=100
)ASorder_bONorder_b.order_id=order.order_id
GROUPBYproduct_id
ORDERBYnumsDESC
                            
查看完整回答
反对 回复 2019-04-10
?
月关宝盒

TA贡献1772条经验 获得超5个赞

oder_id,prodcut_id已做索引
索引是两索引分别在order_id,prodcut_id上?还是一个索引在(order_id,prodcut_id)?
Query1:
selectproduct_id,count(product_id)from
orderWHEREorder_idin(Selectorder_idFROMorderWHEREproduct_id=100)
groupbyproduct_id;
Query2:
selecta.product_id,count(a.product_id)from
orderainnerjoinorderbona.order_id=b.order_idandb.product_id=100
groupbyproduct_id;
Query2isbetter.
                            
查看完整回答
反对 回复 2019-04-10
  • 2 回答
  • 0 关注
  • 289 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信