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

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

原文链接:

mysql中的or_mysql中or和in的效率问题相关推荐

  1. mysql中begin end中变量定义_DECLARE只能用于BEGIN…END的开头部分定义局部变量,其作用范围只能在该BEGIN…END中。_学小易找答案...

    [单选题]表达式select ((6%(7-5))+8)*9-2+(5%2) 的运算结果是______. [判断题]所有变量名@var1.@var2等必须以1个"@"开头,可以由当 ...

  2. 小记mysql备份同库中一张表的历史记录

    mysql备份同库中一张表的历史记录 insert into -select 需求 如今有个这么一个需求.mysql中有个表.数据增长的非常快.可是呢这个数据有效期也就是1个月,一个月曾经的记录不太重 ...

  3. mysql 密码 特殊符号_MySQL数据库之mysql设置复杂密码中含$特殊符号导致无法命令行登录...

    本文主要向大家介绍了MySQL数据库之mysql设置复杂密码中含$特殊符号导致无法命令行登录 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 安全考虑 在设置MYSQL 密码时候 ...

  4. mysql中的explain_MySQL中的EXPLAIN

    使用EXPLAIN加上SELECT语句可以获取优化器的查询执行计划 MySQL会在查询上设置一个标记,当执行查询时,这个标记会返回关于在执行计划中每一步的信息,而不是执行它.它会返回一行或多行信息,一 ...

  5. Windows 7安装MySQL最后一步提示错误“mysql 终结点映射器中没有更多的终结点可用的” 解决方法...

    今天在Windows7系统安装MySQL5.5的时候,碰到错误提示"mysql 终结点映射器中没有更多的终结点可用的" 原因如下: 点击确认后,MySQL可以正常使用 转载于:ht ...

  6. mysql提取数字_Mysql中实现提取字符串中的数字的自定义函数分享

    因需要在mysql的数据表中某一字符串中的字段提取出数字,在网上找了一通,终于找到了一个可用的mysql函数,可以有效的从字符串中提取出数字. 该mysql提取出字符串中的数字函数如下: 复制代码 代 ...

  7. Mysql 查询一天中每半小时记录的数量

    SELECT HOUR(e.time)as Hour,FLOOR(MINUTE(e.time)/30) as M, COUNT(*) as Count FROM error_log e WHERE e ...

  8. Mysql 查询一天中,每个小时数据的数量

    SELECT HOUR(e.time) as Hour,count(*) as Count FROM error_log e WHERE e.date = '2017-09-02' GROUP BY ...

  9. c 5.6 mysql 配置文件_Windows系统中MySQL 5.6的配置文件(my.ini)修改方法_MySQL

    bitsCN.com Windows系统中MySQL 5.6的配置文件(my.ini)修改方法 这也是一个小经验.由于实验需要,我需要修改一下MySQL的配置文件my.ini.在MySQL 5.6.8 ...

最新文章

  1. IDEA 2020.1打开时闪退的问题及解决方法
  2. flink 7-提交任务
  3. 'scrapyd-deploy' 不是内部或外部命令,也不是可运行的程序 或批处理文件。
  4. RabbitMQ核心概念和AMQP协议(二)
  5. struts2令牌(token)内部原理
  6. Java多线程学习四十:如何写一个必然死锁的例子
  7. 用域控制禁止本地存盘禁止使用移动磁盘以防止图纸泄密的解决方案
  8. 【Qt开发】设置中心窗口 setCentralWidget
  9. pythonturtle库填充_python turtle库笔记
  10. 分区助手扩大c盘后自动修复_如何扩大c盘空间? 不用重装系统,分区助手轻松搞定...
  11. 数据分析 - 安然事件
  12. 网页中图片无法显示解决方法
  13. WIN7点击右下角 安全删除硬件并弹出媒体 无反应解决方法
  14. 使用Tiled编辑铁锈战争自定义地图
  15. flex布局 gird布局
  16. linux qt lgl,Linux下QT、cannot find -lGL、
  17. android安装程序后缀,【单选题】Android安装包文件简称APK,其后缀名是() A. .apk B. .exe C. .txt D. .app...
  18. ac Let‘s Play Curling
  19. ATTCK靶场系列(七)
  20. 为什么IT白领生命如此短暂--猝死!!! 让所谓的PMP和IT项目管理见鬼吧。

热门文章

  1. 小程序 后台返回的对象数组(每个数组添加一个新的属性值)
  2. Centos7查看网络配置
  3. 第18章 Redis数据结构常用命令
  4. 你自己的3D建模软件(准备00)——作者的话
  5. 用jQuery插件实现“小图点击预览大图”功能1
  6. [bbk2228] 第41集 - Chapter 11-SQL Statement Tuning(00)
  7. 通过了微软的SharePoint认证考试(70-542: Microsoft Office SharePoint Server 2007 - Application Development)...
  8. OneNote中到底能放多少种东西?
  9. 使用Django开发简单接口:文章增删改查
  10. [原]正则表达式模式匹配入门