1.not in 和 not exists 比较
当查询表的大小相当时,以下三种查询方式通常是:
exists <= in <= JOIN
not exists<= not in <= LEFT JOIN
只有当表中字段允许NULL时,not in 才是最慢的,
not exists <= LEFT JOIN <= not in
如果两张表,一张表大,一张表小。当子查询是大表时,就使用exists,子查询是小表时,使用in。
因为in 是把外表和内表作hash 连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询。
2.UNION 与 UNION ALL 的区别
当使用 UNION 时,MySQL 会把结果集中重复的记录删掉,而使用 UNION ALL ,MySQL 会把所有的记录返回,且效率高于 UNION。