sql null的坑和优化

最近优化接口api,查看了sql语句来优化,看到很多语句都是带着deleted_at is null类型的语句,导致索引失效。网上查看了一些null的缺陷,摘抄记录一下。

  1. count(id), 不会统计null,要使用count(*),sum也会忽略null.
  2. ifnull性能比使用is null要好。
  3. 不能使用运算符,只能是is null, is not null
  4. distinct,group by 会把null作为一个单位分组。
  5. 排序时当作最小。
  6. null是占据内存的,而“”是不占空间的。

总结:

  • 尽量不要使用null默认,比如laravel里面使用软删除的时候,deleted_at会默认为Null,然后一堆查询都是带了null。框架自带的东西不好,就要去调整和优化,不是默认的就是最好的。
  • 尽量使用整型或者字符串来标识空值。

你可能感兴趣的:(SQL,sql)