关于sql的一些优化,记住以下这些,不要看网上的一些以讹传讹!

1. in 在a in (b, c, d, ... , null)中, 括号里面的比较值里面存在NULL的话, 看其它比较值里面是否有跟a相等的值存在, 如果有则返回true, 否则返回false.

2. not in 在 a not in (b, c, d,..., null)中,如果括号里面存在NULL的话, 则一律返回false.
    
3. exists 在 exists的关联查询条件里面如果存在NULL的话,则内部查询是查询不出结果的,不符合exists至少有一行结果集返回的判断, 因此返回false.
    

4. not exists 在not exists的关联查询条件里面如果存在NULL的话,则内部查询也是查询不出结果的,符合not exists对于没有结果集返回的预期判断, 因此返回true.


和DBA共同讨论,结合数据库处理数据逻辑,数据加以验证

你可能感兴趣的:(Mysql)