sql中in和exists的区别效率问题 转
1个回答
展开全部
很多人和说法会认为in和Exists相比后者的效率要高。
但是以我本人使用数据库的经验来看,两者的运行效率其实不相伯仲,不管有无可被利用的索引,它们在运行速度上没有太明显的分别,硬要说哪个快一些的话exists可能会快一点点,但是这种区别通常可以忽略。
然而在求非交集时 not in和not exists运行效率上的差距就很大,碰到大数据表时not in不管有无可被利用的索引,都会导致效率悲剧,其运行速度极之糟糕往往要运行很长的时间才能返回结果,期间系统就像假死一样。not exists在有可被利用的索引的情况下碰到大数据表时其运行效率非常高、表现优异,但是若没有可被利用索引的情况下其运行效率也很不好,此时其运行速度尽管要比not in快上不少但还是属于那种令人无法接受的“蜗速”。
in和exists随各人喜好随便用,特别是数据量不大时。面对大数据表时就要小心,not in无论有无可被利用的索引都应避免使用,not exists在有可被利用索引的情况下可作为首选,反之也要避免使用。
但是以我本人使用数据库的经验来看,两者的运行效率其实不相伯仲,不管有无可被利用的索引,它们在运行速度上没有太明显的分别,硬要说哪个快一些的话exists可能会快一点点,但是这种区别通常可以忽略。
然而在求非交集时 not in和not exists运行效率上的差距就很大,碰到大数据表时not in不管有无可被利用的索引,都会导致效率悲剧,其运行速度极之糟糕往往要运行很长的时间才能返回结果,期间系统就像假死一样。not exists在有可被利用的索引的情况下碰到大数据表时其运行效率非常高、表现优异,但是若没有可被利用索引的情况下其运行效率也很不好,此时其运行速度尽管要比not in快上不少但还是属于那种令人无法接受的“蜗速”。
in和exists随各人喜好随便用,特别是数据量不大时。面对大数据表时就要小心,not in无论有无可被利用的索引都应避免使用,not exists在有可被利用索引的情况下可作为首选,反之也要避免使用。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询