MYSQL IN和OR效率问题分析

MYSQL IN和OR效率问题分析

先说结论:IN 比 OR 快

  • 假设检索的列为N,IN 的时间复杂度为 O(LogN),而 OR 的时间复杂度为 O(N)

  • 在数据量少于100条时的情况下差别不大

  • 当要检索的列为主键索引时,IN 的执行速度和 OR 差别不大

  • 当要检索的列为普通索引时,IN 的执行速度和 OR 差别不大

  • 当要检索的列没有索引时,IN的执行速度要远大于 OR

  • 例如:1000条左右的数据,没有索引的情况下执行时间 IN 是在秒级别,而OR是分钟级别的。

为什么 IN 比 OR 快?

  • SELECT * FROM tbName WHERE KEY IN (a1, a2, …… , an);

  • SELECT * FROM tbName WHERE KEY = a1 OR KEY = a2 OR …… OR KEY = an;

  • 用不上索引的情况下,遍历全表的 key,去匹配 a1, a2, ……, an

  • OR,就是从 a1 匹配,匹配失败,去匹配 a2,直到匹配成功或者一个都匹配不上,时间复杂度是 O(N)

  • IN,先将 a1, a2, ……., an 变成二叉搜索树,用过二叉树查找,时间复杂度为O(LogN)

  • 因此,IN 的效率要高于 OR,参数集合范围越大,IN 的性能不会太大下降,而 OR 会下降非常厉害。

(0)

相关推荐

  • 读书不快,不如不读

    前些天趁着当当打折,我抢购了8本书作为下个月的必读书.根据过往经验,即使在"忙成狗"的前提下,我也可以保证自己每周读上两本书,照这个读法,今年应该可以读完100本书. 看到这,也许 ...

  • MYSQL数据库服务磁盘IO高问题分析与优化

    MYSQL数据库服务磁盘IO高问题分析与优化 压力测试过程中,如果因为资源使用瓶颈等问题引发最直接性能问题是业务交易响应时间偏大,TPS逐渐降低等.而问题定位分析通常情况下,最优先排查的是监控服务器资 ...

  • PPT干货 | 动作效率的分析与改善

    PPT干货 | 动作效率的分析与改善

  • MySQL基础架构和执行流程分析

    MySQL执行一条插入语句或者查询语句,实际上会经过哪些流程和部件,MySQL的架构是怎么样的,本文就一起从一条查询语句的执行流程开始来揭开面纱. 如以下的执行语句: select * from te ...

  • 【实务】提高银行流水查询分析效率的方法 | 23

    来源:我们都是担当人公号,作者:宋冀峰,审稿顾问:清云 银行流水查询分析工作是纪检监察机关核查问题线索.收集证据.固定证据的重要途径之一.随着金融科技的迅猛发展,新兴金融工具层出不穷,网络信用.网商银 ...

  • 提高银行流水查询分析效率的方法

    来源:我们都是担当人公号,作者:宋冀峰. 银行流水查询分析工作是纪检监察机关核查问题线索.收集证据.固定证据的重要途径之一.随着金融科技的迅猛发展,新兴金融工具层出不穷,网络信用.网商银行业务不断扩张 ...

  • 部门之间沟通效率低下的原因分析

    现代社会是信息化的社会,沟通作为信息传递的媒介起到了越来越重要的作用,有效的沟通也越来越受到了重视.在企业内部也是如此.尤其是在企业分工细化.部门设置增多.组织结构趋于扁平化的情况下,跨部门沟通逐渐频 ...

  • 【房企年报解析】房企现金周期分析:TOP50房企资金效率分化明显,缩短周期仍是未来趋势

    ‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍ 「现金周期」衡量的是企业资金在产业链中的积压周期,即企业前期筹备支付现金到销售收回现金的天数,现金周期的长短反映了企业对于其资金的使用效率.从传统的现金周 ...

  • 分析:武磊本赛季能否与球队顺利冲甲?年龄与效率是他的劣势

    前言 这一段时间武磊在西班牙人队中不好过,为什么呢? 因为在与其他前锋竞争的过程中,武磊并不占优,而且武磊是球队常规4个前锋中年龄最大的那一个. 从年龄与效率比较 在比森特-莫雷诺来到西班牙人之后,武 ...

  • MySQL索引失效底层原理分析,MySQL索引为什么失效,这篇文章全部告诉你

    前言 吊打面试官又来啦,今天我们讲讲MySQL索引为什么会失效,很多文章和培训机构的教程,都只会告诉你,在什么情况下索引会失效. 比如:没遵循最佳左前缀法则.范围查询的右边会失效.like查询用不到索 ...