Alice52 / database

ddf13ad8d4be76a80a336418b5cf5727bf6e3059
gitee.com
MIT License
0 stars 0 forks source link

[db] null #18

Closed Alice52 closed 3 years ago

Alice52 commented 3 years ago

NULL

  1. 数据列[索引列]尽量不要有 null[非索引列无所谓], 最好都设置有默认值
    • 存储大量的 NULL 值, 除了计算更复杂之外, 数据扫描的代价也会更高一些
  2. 辅助索引需要 MVCC 多版本读的时候,为什么需要依赖聚集索引
    • 辅助索引中不存储 DB_TRX_ID, 需要依托聚集索引实现 MVCC
  3. 索引列允许为 NULL, 会额外存储更多字节吗
    • 定义列值允许为 NULL 并不会增加物理存储代价, 但对索引效率的影响要另外考虑
  4. 叶子节点总是存储最新数据, 而非叶子节点则不一定
  5. SUM(NULL) 统计一个只有 NULL 值的列 值为 NULL
  6. null=null 的结果是 NULL; null!=null 的结果也是 NULL; null + 任何都是 null
    • 需要使用 isnull(col){性能好可读性高} || is [not] null || IFNULL(col)
  7. count(column) & count(*) & count(1)
  8. count(distinct col1, col2): 某一列有空值就不会参与最终的计数
  9. where a.f2=b.f2
    • Where (a.f2 is not null) and (b.f2 is not null) and (a.f2 =b.f2)
  10. avg() 没有匹配的行返回 null
  11. not in (存在null) 则不会有结果