zoukankan      html  css  js  c++  java
  • mysql中or和in的效率问题

    分三中情况进行测试,分别是:
    第一种情况: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

    https://www.cnblogs.com/lixiuyuan999/p/6368871.html

  • 相关阅读:
    【应用】Linux内存调试工具:valgrind
    Python UnboundLocalError: local variable 'xxx' referenced before assignment 解决方法
    MYSQL连接时错误码2059解决办法
    Python encode()、decode()方法详解
    genymotion自动化使用
    论文数据集
    Native Apps、Web Apps和Hybrid Apps
    C# 中如何进行私有(private)函数测试
    Windows10 计划任务开始失败
    如果系统盘后面是恢复盘,如何扩充系统盘
  • 原文地址:https://www.cnblogs.com/newlangwen/p/9682718.html
Copyright © 2011-2022 走看看