mysql 把多个 or 改成 in 会更加高效吗?
如果没有索引或主键or会查全表比较慢, in不会, 整体来说in快,用in数据越少越快, 有索引或主键就差不多
<SQL的36条军规>里面也规定必须使用in代替or,
SQL官方文档里面说明in要快得多
https://dev.mysql.com/doc/refman/8.0/en/comparison-operators....
这个具体取决于数据量和索引的使用情况,如果数据量较小或者索引无法有效使用,那么性能的提升可能并不明显。使用多个OR,数据库需要逐个判断每个条件是否满足,使用IN可以将多个值一次性传递给数据库进行匹配,减少了判断的次数。如果该列存在索引,使用多个OR条件时,每个条件都可能需要单独的索引查找,而使用IN条件可以一次性查找所有的值。
1.in或or在字段有添加索引的情况下,查询很快,两者查询速度没有什么区别;
2.in或or在字段没有添加索引的情况下,所连接的字段越多(1or2or3or4or......),or比in的查询效率低很多
3 回答1.7k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
2 回答1.4k 阅读✓ 已解决
2 回答1.3k 阅读✓ 已解决
1 回答1k 阅读✓ 已解决
3 回答1.6k 阅读
2 回答974 阅读✓ 已解决
建议使用in,mysql为in做了很多优化,如果in是不相关子查询,那么会先试着转换为semi join,如果不符合semi join,还会尝试转换为物化来实现,理想情况下都可以转换为连接查询,如果是相关子查询就会转换为exists查询,这些都要比单纯的or逻辑判断要快