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

首先我这里有张表近三千万条的数据 表里有个状态(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() 那个更快呢?)