明明有主键索引,为什么mysql索引失效

执行语句,发现仓储表wh_warehouse全表扫描

EXPLAIN 
SELECT 
  * 
FROM
  wh_inbound_order_detail e 
  LEFT JOIN  wh_warehouse ww 
    ON ww.id = e.warehouse_id 
WHERE      ww.isGs = 0
    AND ww.is_jiancai = 0 


明明有索引的啊,为什么呢?只有主键索引的时候没没匹配到,那么干脆在创建个联合索引吧,没想到还是没匹配到。

下面这样写就可以了。因为主键没有匹配到的情况下,ww.isGZ 和 ww.is_jiancai 都是NULL。

EXPLAIN 
SELECT 
  * 
FROM
  wh_inbound_order_detail e 
  LEFT JOIN  wh_warehouse ww 
    ON ww.id = e.warehouse_id 
    AND ww.isGs = 0
    AND ww.is_jiancai = 0 

 

看一下两张表的编码是不是一样的

最左原则