mysql 把多个 or 改成 in 会更加高效吗?

新手上路,请多包涵

mysql 把多个 or 改成 in 会更加高效吗?

阅读 4k
7 个回答

建议使用in,mysql为in做了很多优化,如果in是不相关子查询,那么会先试着转换为semi join,如果不符合semi join,还会尝试转换为物化来实现,理想情况下都可以转换为连接查询,如果是相关子查询就会转换为exists查询,这些都要比单纯的or逻辑判断要快

这个具体取决于数据量和索引的使用情况,如果数据量较小或者索引无法有效使用,那么性能的提升可能并不明显。使用多个OR,数据库需要逐个判断每个条件是否满足,使用IN可以将多个值一次性传递给数据库进行匹配,减少了判断的次数。如果该列存在索引,使用多个OR条件时,每个条件都可能需要单独的索引查找,而使用IN条件可以一次性查找所有的值。

1.in或or在字段有添加索引的情况下,查询很快,两者查询速度没有什么区别;
2.in或or在字段没有添加索引的情况下,所连接的字段越多(1or2or3or4or......),or比in的查询效率低很多

新手上路,请多包涵

如果IN操作有用使用到索引,那么in比or效率高

新手上路,请多包涵

数据比较多的情况下,通常是不建议用or

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏