mysql中使用IN的注意事项

前言

在写sql语句过程中,难免会使用IN条件查询,那你知道使用IN要注意那些事项呢?下面我们就来一列举

注意事项

  1. 使用IN查询是否会使用索引
    答:有时会使用,有时就不会使用。当IN 的范围小时会使用索引查询,当IN的范围大的时候,就会全表扫描。

  2. IN和EXISTS那个效率高
    答:1、如果查询的两个表大小相当,那么用in和exists差别不大。
    2、如果两个表中一个表大,另一个是表小,那么IN适合于外表大而子查询表小的情况。
    3、如果两个表中一个表大,另一个是表小,EXISTS适合于外表小而子查询表大的情况。

  3. IN的括号中能否使用以逗号隔开的字符串
    答:不可以,只会匹配所谓的“第一个” 值,使用GROUP_CONCAT拼接起来的也不行,比如下面的查询,最多查出一条记录,实际有很多条.

SELECT * FROM goods_detail WHERE id IN(SELECT GROUP_CONCAT(goods_detail_id) FROM good_record WHERE order_detail_id = xxx);
  1. NOT IN 会不会使用索引
    答:绝对不会使用索引,要谨慎使用。

  2. 新手最容易犯的错误
    答:在程序中将多个值以逗号分隔拼成一个字符串,然后传sql中使用IN查询,比如:
    String var = “1,2,3,4”;

select * from dual id IN(#{var});

这样做是错的,千万要记住。

相关推荐

  1. mysql使用IN注意事项

    2024-01-11 06:56:05       38 阅读
  2. mysql基础注意事项

    2024-01-11 06:56:05       9 阅读
  3. C++使用模板注意事项

    2024-01-11 06:56:05       28 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-11 06:56:05       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-11 06:56:05       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-11 06:56:05       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-11 06:56:05       18 阅读

热门阅读

  1. bat脚本sqlserver 不同数据库同步

    2024-01-11 06:56:05       36 阅读
  2. 存储服务器有什么功能?

    2024-01-11 06:56:05       34 阅读
  3. 记录 | ubuntu给ssh远程的服务器起别名

    2024-01-11 06:56:05       40 阅读
  4. Mac中如何卸载干净 IDEA

    2024-01-11 06:56:05       36 阅读
  5. android系列-init SetupSelinux

    2024-01-11 06:56:05       38 阅读
  6. MongoDB——去重函数Distinct

    2024-01-11 06:56:05       37 阅读
  7. MongoDB相关问题及答案(2024)

    2024-01-11 06:56:05       33 阅读
  8. python之面向对象

    2024-01-11 06:56:05       39 阅读
  9. [Linux]网卡配置修改

    2024-01-11 06:56:05       38 阅读