Mybatis及Plus,SQL语句IN和OR的区别 用法

Mybatis及Plus,SQL语句IN和OR的区别 用法

编程文章jaq1232025-05-07 13:12:0712A+A-

一、IN和OR的原理

1、in:in是把父查询表和子自查询表作hash连接;

2、or:or是对父查询表作loop循环,每次loop循环再对子查询表进行查询;

二、操作不同

1、in:in是把父查询表和子自查询表作hash连接;

2、or:or是对父查询表作loop循环,每次loop循环再对子查询表进行查询;

三、适合不同

1、in:in适合用于子查询表数据比父查询表数据多的情况;

2、or:or适合用于子查询表数据比父查询表数据少的情况;

四、执行效率不同

1、in:在没有索引的情况下,随着in后面的数据量越多,in的执行效率不会有太大的下降;

2、or:在没有索引的情况下,随着or后面的数据量越多,or的执行效率会有明显的下降;

五、SQL应用举例

SELECT COUNT(*) FROM health_goods g WHERE g.id IN (72,73,74);
SELECT COUNT(g.id) from health_goods g inner join health_goods_company gc on g.id = gc.goods_id WHERE gc.company_id = 1 AND g.id IN (75,76,77);
SELECT COUNT(*) FROM health_goods g WHERE g.id=72 OR g.id=73 OR g.id=74;
SELECT COUNT(g.id) from health_goods g inner join health_goods_company gc on g.id = gc.goods_id WHERE gc.company_id = 1 AND (g.id=72 OR g.id=73 OR g.id=74);

Mybatis中使用in查询:

Mybatis-Plus中使用in查询:

点击这里复制本文地址 以上内容由jaq123整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!

苍茫编程网 © All Rights Reserved.  蜀ICP备2024111239号-21