MySQL 索引命中问题

SELECT
    a.*,
    b.food_name,
    d.`name`
FROM
    a
    LEFT JOIN b ON a.number = b.order_number
    LEFT JOIN c ON b.order_number = c.number
    LEFT JOIN d ON c.store_id = d.id 
WHERE
    a.hide = 0 
    AND a.deleted_at IS NULL  
     AND a.wid = 1996 
GROUP BY
    a.id 
ORDER BY
    a.id DESC 
    LIMIT 5

此时 where 条件中 AND a.wid = 1996 , b表就全表扫描了

image.png

如果我换成 AND b.wid = 1996

image.png

这是为啥啊
b 是一个大表
a.number 可能会对应 b 表的多条

阅读 1.9k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题