晕,更正下,上面打错了,是 merge join .-----
总结: 在用来分组的字段可分组比较少的情况,用gorup by 分组后再inner join原表的效率会明显高于not exists写法, 因为group by 后再inner join 原表是采用 merge join ,这要在有分组列有索引的情况下,已经排序,数据又少,速度极快。 但not exits是nested loop join,在这种有大量外部数据输入再比较的情况下,效率是很慢的。 反之,两者效率相当,都会很慢。
总结: 在用来分组的字段可分组比较少的情况,用gorup by 分组后再inner join原表的效率会明显高于not exists写法, 因为group by 后再inner join 原表是采用 merge join ,这要在有分组列有索引的情况下,已经排序,数据又少,速度极快。 但not exits是nested loop join,在这种有大量外部数据输入再比较的情况下,效率是很慢的。 反之,两者效率相当,都会很慢。
今天早上在一个帖子里面才回复了,
没有时间测试,
没想到P.A居然就测试出来了。
谢谢完美MM.:)