zoukankan      html  css  js  c++  java
  • SQL基础(七)--or和in的使用

    网上有很多人都在谈论or与in的使用,有的说二者没有什么区别,其实不然,估计是测试做的不够,其实or的效率为O(n),而in的效率为O(log2n),当基数越大时,in的效率就能凸显出来了。

    有人做了这么一组实验(测试库数据为1000万条记录):A组分别用or与in查询3条记录,B组分别用or与in查询120条记录,C组分别用or与in查询500条记录,D组分别用or与in查询1000条记录.

    第一种情况,目标列为主键的情况,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.017s     in的执行时间为:0.014s

    第二种情况,目标列为一般索引的情况,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.020s     in的执行时间为:0.019s 

    第三种情况,目标列没有索引的情况,4组测试执行计划就不一样,执行的时间也有了很大的区别。
    A组or和in的执行时间: or的执行时间为:5.016s      in的执行时间为:5.071s
    B组or和in的执行时间: or的执行时间为:1min 02s     in的执行时间为:5.018s
    C组or和in的执行时间: or的执行时间为:1min 50s     in的执行时间为:5.010s

    D组or和in的执行时间: or的执行时间为:6min 13s     in的执行时间为:5.047s

    结论:

    in和or的效率,取决目标条件列是否有索引或者是否是主键,如果有索引或者主键性能没啥差别,如果没有索引,in的性能要远远优于or.
    ---------------------
    原文:https://blog.csdn.net/weixin_40609759/article/details/79998911

  • 相关阅读:
    夜神模拟器连接电脑
    Appium+python 多设备自动化测试
    appium+python 连接手机设备的yaml配置文件
    appium+python自动化测试连接设备
    Ansible 学习目录
    Python 时间处理
    获取本机网卡ip地址
    Ansible playbook 使用
    ansible hosts配置
    python os和sys模块使用
  • 原文地址:https://www.cnblogs.com/BounceGuo/p/10695747.html
Copyright © 2011-2022 走看看