前言
在写sql语句过程中,难免会使用IN条件查询,那你知道使用IN要注意那些事项呢?下面我们就来一列举
注意事项
-
使用IN查询是否会使用索引
答:有时会使用,有时就不会使用。当IN 的范围小时会使用索引查询,当IN的范围大的时候,就会全表扫描。 -
IN和EXISTS那个效率高
答:1、如果查询的两个表大小相当,那么用in和exists差别不大。
2、如果两个表中一个表大,另一个是表小,那么IN适合于外表大而子查询表小的情况。
3、如果两个表中一个表大,另一个是表小,EXISTS适合于外表小而子查询表大的情况。 -
IN的括号中能否使用以逗号隔开的字符串
答:不可以,只会匹配所谓的“第一个” 值,使用GROUP_CONCAT拼接起来的也不行,比如下面的查询,最多查出一条记录,实际有很多条.
SELECT * FROM goods_detail WHERE id IN(SELECT GROUP_CONCAT(goods_detail_id) FROM good_record WHERE order_detail_id = xxx);
-
NOT IN 会不会使用索引
答:绝对不会使用索引,要谨慎使用。 -
新手最容易犯的错误
答:在程序中将多个值以逗号分隔拼成一个字符串,然后传sql中使用IN查询,比如:
String var = “1,2,3,4”;文章来源:https://www.toymoban.com/news/detail-788981.html
select * from dual id IN(#{var});
这样做是错的,千万要记住。文章来源地址https://www.toymoban.com/news/detail-788981.html
到了这里,关于mysql中使用IN的注意事项的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!