not exists在有可被利用索引的情况下效率很高,但是在大数据表的情况下如果没有可被利用索引的情况下其运行效率很差。
not in 则在大数据表的情况下,不论有无可被利用的索引,其运行效率均极低,比无索引可用的not exists还要慢很多。
in和exists常用于求交集,它们的运行效率分别不大,可根据个人喜好选用。not in和not exists常用于求非交集,小数据表时可随便用,但是碰到大数据表时就要小心了。not in不论有无可被利用的索引都会出现效率上的悲剧,应避免使用。not exists在有索引可用的情况下表现优异可作为获取非交集的首选,然而在无索引可用时却很慢,此时也应避免使用。
在查询效率上,是第一个快但是在对服务器的io压力上,倾向于使用第二个
因为一次查询就是一次mysql链接,占一个磁盘io。而且mysql一般的链接数是2000.你这一循环就一下占100个链接,虽然不会那么夸张,但是如果是高并发的情况。。就不容乐观了。
所以推荐使用第二个。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)