博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql中or和in的效率问题
阅读量:6319 次
发布时间:2019-06-22

本文共 1035 字,大约阅读时间需要 3 分钟。

分三中情况进行测试,分别是:

第一种情况: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的查询效率低很多

 

原文链接:

转载于:https://www.cnblogs.com/newlangwen/p/9682718.html

你可能感兴趣的文章
(转)Android中的Shape使用总结
查看>>
解决stackoverflow打开慢不能注册登录
查看>>
谈谈newDate()的简单使用 JS
查看>>
django-1-新手如何使用django
查看>>
Linq 基础
查看>>
windows应用程序框架及实例
查看>>
Hibernate 对象的三种状态
查看>>
SVN提交出现“< < < < < < < .mine’无效,路径中具有非法字符”的问题
查看>>
BZOJ-4915-简单的数字题
查看>>
UVa 270 & POJ 1118 - Lining Up
查看>>
UVa 442 - Matrix Chain Multiplication
查看>>
微服务架构 SpringCloud(一)组件和概念介绍
查看>>
23种设计模式之原型模式
查看>>
Android开发指南(39) —— Testing Fundamentals
查看>>
【Unity Shader学习笔记】(五)使用鼠标绘制自由多边形(附完整工程源码)
查看>>
laravel 心得
查看>>
[LeetCode] Permutation Sequence
查看>>
Solr索引数据库数据
查看>>
关于学习编程和做好DBA的关系
查看>>
Linux编程基础——Makefile
查看>>