孤尽班第二次课

导读:本篇文章讲解 孤尽班第二次课,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

孤尽班第二次课

数据库设计的规范

表 字段 命名

  • 必须使用小写字母 或者数字
  • 禁止出现数字开头
  • 禁止两个下划线中间只出现数字
  • 不使用

建表强制规约

数据类型
– 小数类型为 decimal

  • 货币数量使用最小货币单位, 数据类型为bigint
  • 字符串长度几乎相等 使用char
    定长的数据类型为char 能节约空间
    注意 长10 存5 有5 个空格
  • varchar 长度不要超过 5000

建表推荐规约

  1. 表的名称最好遵循 业务名称表饿 作用
  2. 库名于应用名称尽量一致
  3. 如果修改字段含义或字段表示的状态追加时,需要及时更新字段解释
  4. 字段允许适当冗余,以提高查询性能,但必须数据一致
  5. 单表行数超过 500 万行 或者单表容量超过 2 GB ,才推荐进行分库 分表

索引规约

索引占空间 和 表得比率 是 1 :1
持久性 和 有序性

索引的分类

  1. 存储形式
  2. 非聚合索引
    数据约束
  3. 主键所引
  4. 唯一索引
  5. 非唯一索引

索引类的数量
6. 单行索引
7. 组合索引
Innodb 可以创建的索引
8. 逐渐索引
9. 唯一索引
10.普通索引
不可以 创建的索引- 》 覆盖索引

索引的数据结构 二叉查找树

索引btree 以16k为单位

键值: 即表中记录的主键
指针: 存储 子节点 地址信息
数值: 即表记录中除主键外的数据

索引的数据结构:b+tree

键值, 即表中记录的主键
指针,存储子节点地址信息
数据, 即表记录中除主键外的数据

索引名称规则

索引命名

  • 主键索引名为pk_ 字段名
  • 唯一索引名为uk_ 字段名
  • 普通索引名则为idx_ 字段名

创建索引规约

  1. 有唯一特性的字段必须建成唯一索引
  2. 在varchar 字段上建立索引时,必须指定索引长度
  3. 建组合索引的时候,区分度最高的在最左边

创建索引避免如有如下极端误解

  1. 索引宁缺勿滥(认为一个查询就要建 一个索引)
  2. 吝啬索引创建 (认为创建所应会消耗空间,严重拖慢记录的更新以及行放入新增速度)
  3. 抵制唯一索引 认为 唯一索一律 需要通过应用层 通过先查后插方式解决

SQL 规约

优化SQL 语句的要点
Explain 的使用指南

SQL 规范- 索引

  1. 注意字段类型 【防止因字段类型不同造成的隐式转化,导致索引 失效】
  2. 利用覆盖索引【利用覆盖索引来技能型查询操作,避免回表】
  3. 利用有序性 如果有order by d的场景,请注意利用索引的有序性
  4. 禁模糊 【页面搜索严禁左模糊或者全模糊,如果需要请走搜索引擎来解决】

超过三个表 禁止用 join on

SQL 规约 – count

  • 拒绝替代 【不要使用count (列名) 或者 count( 常量) 来 替代 count(*)】
  • count(distinct col) 计算该列除NULL 之外的 不重复行数
  • 当某一列的值 全 是NULL , count (col) 的返回 结果 为0 , 但sum(col) 的 返回结果为 NULL

SQL 规则- 分页

  1. 若count 为 0 【 分页查询逻辑时,若count 为 0 应直接返回】
  2. 优化超多分页场景【利用延迟关联或者子查询优化超多分页场景】

SQL 规则- null 值

使用ISNULL() 来判断是否为NULL 值

  • NULL <> NULL null <> null 的返回结果是NULL , 而不是flase
  • NULL= NULL 的返回结果是NULL, 而不是true
  • null<> 1 NULL<> 1 的返回结果是NULL , 而不true

SQL 性能优化的目标

Explain 工具使用技巧
达到range 级别
Explain+ 覆盖索引
Explain + index 全索引扫描
Expain + filesort

ORM 映射规约

优化SQL 语句的要点

Explain 的 使用指南

ORM 映射的避坑 指南

ORM 映射规约

  1. 在表查询中, 一律不要使用“ 作为查询的字段列表”
  2. POJO 类的布尔属性 不能加 is , 而数据库字段必须加 “is_”
  3. 查询返回结果都需要 使用 ResultMap 映射
  4. 不要使用${}
  5. 不要使用 MyBatis 自带的queryForList 方法
  6. 不允许 直接使用 HashMap 于 Hashtable 接受结果集
  7. 更新数据表记录时 必须 同时更新 update_time
  8. 不要 写一个 大而全的数据库更新接口

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/77143.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!