mysql的in与or哪个效率更好
发布网友
发布时间:2022-05-01 16:04
我来回答
共2个回答
懂视网
时间:2022-05-01 20:25
![](https://img.51dongshi.com/20210302/wz/75301852.jpg)
分三中情况进行测试,分别是:
第一种情况:in和or所在列为主键的情形。
第二种情况:in和or所在列创建有索引的情形。
第二种情况:in和or所在列没有索引的情形。
每种情况又采用不同的in和or的数量进行测试。由于测试语句的数据量有4种情况,我这里就称为A组、B组、C组、D组,其中A组为3个值,B组为150个值,C组为300个值,D组为1000个
?
测试结果如下:
第一种情况,ID列为主键的情况,4组测试执行计划一样,执行的时间也基本没有区别。
A组or和in的执行时间: or的执行时间为:0.002s in的执行时间为:0.002s
B组or和in的执行时间: or的执行时间为:0.004s in的执行时间为:0.004s
C组or和in的执行时间: or的执行时间为:0.006s in的执行时间为:0.005s
D组or和in的执行时间: or的执行时间为:0.018s in的执行时间为:0.014s
第二种情况,ID列为一般索引的情况,4组测试执行计划一样,执行的时间也基本没有区别。
A组or和in的执行时间: or的执行时间为:0.002s in的执行时间为:0.002s
B组or和in的执行时间: or的执行时间为:0.006s in的执行时间为:0.005s
C组or和in的执行时间: or的执行时间为:0.008s in的执行时间为:0.008s
D组or和in的执行时间: or的执行时间为:0.021s in的执行时间为:0.020s
第三种情况,ID列没有索引的情况,4组测试执行计划一样,执行的时间也基本没有区别。
A组or和in的执行时间: or的执行时间为:5.016s in的执行时间为:5.071s
B组or和in的执行时间: or的执行时间为:1min 02s in的执行时间为:5.018s
C组or和in的执行时间: or的执行时间为:1min 55s in的执行时间为:5.018s
D组or和in的执行时间: or的执行时间为:6min 17s in的执行时间为:5.057s
结论:
1.in或or在字段有添加索引的情况下,查询很快,两者查询速度没有什么区别;
2.in或or在字段没有添加索引的情况下,所连接的字段越多(1or2or3or4or......),or比in的查询效率低很多
文章连接:http://m.blog.chinaunix.net/uid-20639775-id-3416737.html
mysql中or和in的效率问题
标签:0.00 区别 blog 主键 log html 执行计划 bsp 测试
热心网友
时间:2022-05-01 17:33
第一种情况:in和or所在列为主键的情形。
第二种情况:in和or所在列创建有索引的情形。
第二种情况:in和or所在列没有索引的情形。
每种情况又采用不同的in和or的数量进行测试。由于测试语句的数据量有4种情况,我这里就称为A组、B组、C组、D组,其中A组为3个值,B组为150个值,C组为300个值,D组为1000个!
mysql的in与or哪个效率更好
第一种情况:in和or所在列为主键的情形。第二种情况:in和or所在列创建有索引的情形。第二种情况:in和or所在列没有索引的情形。每种情况又采用不同的in和or的数量进行测试。由于测试语句的数据量有4种情况,我这里就称为A组、B组、C组、D组,其中A组为3个值,B组为150个值,C组为300个值,...
mysql查询中in和多个or的区别
多数据库服务器都只把IN()看作多个OR的同义词,因为它们在逻辑上是相等的。MYSQL不是这样的,它会对IN()里面的数据进行排序,然后用二分法查找个是否在列表中,这个算法的效率是O(Logn),而等同的OR子句的查找效率是O(n)。在列表很大的时候,OR子句就会变得慢得多。
mysql in语句查询
没啥区别其实,都可以正常走索引,非要说的话第一条高点但有限,但如果是id=232 or id=233 or... 和 id in(232,233...)这种特别多时,并且id字段没有索引,那么=加上or的效率会远远低于in的效率,如果有索引那基本没差
mysql in是什么意思?
同时,在查询多个数据时,可以不必多次使用OR逻辑运算符,使用IN操作符可使代码更加简洁易懂。总而言之,MySQL中的IN操作符是相当重要的,掌握它可以提高MySQL查询的效率,减少代码开发的难度。
mysqlin和一个一个查哪个效率高
mysqlin效率高。根据查询csdn博客网显示。1、MySQL采用了高效的存储引擎,如InnoDB和MyISAM,可以处理大量的并发请求。2、MySQL查询缓存功能是在连接器之后发生的,优点是查询效率高,如果已经有缓存则直接返回缓存结果。
mysql中select * from test where id in (1) select * from test where...
很显然,=的效率会高一些。在查询中,in是不会用到索引的,相当于是全表扫描,所以慢。
怎么代替mysql的in函数优化速度
1、对于索引列来最好使用union all,因复杂的查询【包含运算等】将使or、in放弃索引而全表扫描,除非你能确定or、in会使用索引。2、对于只有非索引字段来说你就老老实实的用or 或者in,因为 非索引字段本来要全表扫描而union all 只成倍增加表扫描的次数。3、对于及有索引字段【索引字段有效】又...
SQL必知必会(第五版)
IN:WHERE子句中用来指定要匹配值的清单的关键字,功能与OR相当。 IN操作符一般比一组OR操作符执行得更快。 IN的最大优点是可以包含其他SELECT语句,能够更动态地建立WHERE子句。NOT: WHERE子句中用来否定其后条件的关键字。通配符(wildcard) 用来匹配值的一部分的特殊字符。 搜索模式(search...
数据库(比如MYSQL) ,表连结查询与子查询哪个效率高些? 为什么
in子查询、exists子查询、连接,效率的探讨 以下是SQL的帮助 (高级查询优化概念)Microsoft® SQL Server™ 2000 使用内存中的排序和哈希联接技术执行排序、交集、联合、差分等操作。SQL Server 利用这种类型的查询计划支持垂直表分区,有时称其为分列存储。SQL Server 使用三种类型的联接操作:嵌...
提高mysql查询效率的方法有哪些
4.在WHERE中尽量不要使用OR 5.用EXISTS替代IN、用NOT EXISTS替代NOT IN;6.避免在索引列上使用计算:WHERE SAL*12>25000;7.用IN来替代OR: WHERE LOC_ID=10 OR LOC_ID=15 OR LOC_ID=20 8.避免在索引列上使用IS NULL和IS NOT NULL;9.总是使用索引的第一个列;10.用UNION-ALL替代UNION;11...