首先我这里有张表近三千万条的数据 表里有个状态(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发现你过滤的这个值都是大量重复的 就会帮你全表检索
看此文章
具体哪个更快 这边我也是测试 貌似没有准确的答案 哎 忙其它的了 下次再测 哈哈哈哈哈....
网友评论