美文网首页
MySQL 千万条数据 匹配一个状态 != 和 in() 那个

MySQL 千万条数据 匹配一个状态 != 和 in() 那个

作者: 有心丶人 | 来源:发表于2020-06-06 10:53 被阅读0次

    首先我这里有张表近三千万条的数据 表里有个状态(hotel_status)分别为1,2,3,4 想查出不等于4的 到底用!=还是in呢?


    测试表
    表中的字段
    添加索引的字段
    这个测试只针对于 加了索引的 如果想测无索引时那个更快 恐怕是挺慢的

    写了两条SQL 分别用不等于和 in

    SELECT hotel_status  FROM t_jielv_pd_hotel_nightly_rate WHERE hotel_status !=4 
    
    SELECT hotel_status  FROM t_jielv_pd_hotel_nightly_rate WHERE hotel_status in (1,2,3) 
    
    OMG! 很显然大量数据操作的话 mysql还是有点吃力的(我这台mysql占得内存很大 )
    image.png

    那我们就筛选一千万吧 我再后面加个 LIMIT 10000000吧


    @!= 一千万条数据用了 50S in or
    三个条件过滤 会发现都是一样的速度 这是为什么呢? mysql 5.7以后 会默认帮你优化语句 即使第一条没有用到索引 它也会默认帮你优化,
    还有一点就是mysql发现你过滤的这个值都是大量重复的 就会帮你全表检索
    看此文章
    具体哪个更快 这边我也是测试 貌似没有准确的答案 哎 忙其它的了 下次再测 哈哈哈哈哈....

    相关文章

      网友评论

          本文标题:MySQL 千万条数据 匹配一个状态 != 和 in() 那个

          本文链接:https://www.haomeiwen.com/subject/cmpttktx.html