还是要具体看下你这个SQL的执行计划。首先你这个SQL是个假的外连接,优化器会直接改写成如下内连接:
SELECT a.*
FROM records a, company b
WHERE a.eid = b.eid
AND b.id = ?
ORDER BY a.change_date DESC
然后,按照你描述的,估计就是a表和b表的JOIN方式变了:
1、如果是a表驱动b表,那a表就是全表扫描,b表走eid索引(IndexJoin)或者id主键(HashJoin)
2、如果是b表驱动a表,那b表走id主键,a表走(eid, u_id)索引(IndexJoin)或者全表扫描
所以大概至少就有上述4种JOIN方式,具体谁更优还要看你a表的行数规模以及a.eid字段的筛选能力,所以需要对比Mybatis和Navicat下SQL的执行计划