T31训练营-DAY3数据库规范

前言

DAY3学习了数据库建表规范,主要学习内容

  • 建表规约
  • 索引规约
  • SQL与ORM映射规约
  • 数据库设计实战

建表规约

规定数据库一系列名称的取名规范,选择合适的数据类型与长度

数据类型

  • 小数采用decimal
  • 货币数据使用最小货币单位,数据类型为bigint
  • 字符串长度相等选用char
  • varchar长度不要超过5000

表必备三字段

  • id
  • create_time
  • update_time

推荐规约

  1. 表名遵循“业务名称_表的作用”
  2. 库名与应用名一致
  3. 修改字段含义或状态追加,及时更新注释
  4. 字段允许适当冗余
  5. 单表超过500万或单标容量超过2G,才推荐分库分表

索引规约

索引名

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

创建索引规约

  • 有唯一特性的字段必须建成唯一索引
  • varchar字段建立索引,指定索引长度
  • 建立组合索引,区分度最高在左边

SQL规约

索引

  • 注意字段类型,防止隐式转换
  • 利用覆盖索引
  • 利用索引的有序性
  • 禁止模糊查询(左模糊,全模糊)

超过三个表禁止join

COUNT

  • 拒绝替代,不要使用count(列名),count(常量)代替count *
  • 计算不重复行数
  • 当值全是Null时,count(列名)是0,sum(列名)是null

使用isnull()来判断是否为null值

ORM映射规约

  • 不使用select *
  • POJO的布尔类型不使用is,数据库字段必须加is
  • 查询返回结果都使用resultmap映射
  • 不使用${}
  • 不使用mybatis自带queryForList
  • 不允许直接使用HashMap与Hashtable
  • 更新数据库记录,同时更新update_time
  • 不要写一个大而全更新接口

SQL优化

MySQL 提供了一个 EXPLAIN 命令 , 它可以 SELECT 语句的执行计划进行分析 , 并输出 SELECT 执行的 详细信息, 以供开发人员针对性优化 .
explain各列含义
  • id:查询标识符
  • select_type:查询的类型
  • table:查询的表
  • partitions:分区
  • type:join类型
  • possible_keys:可能选用的索引
  • key:实际使用的索引
  • ref:哪个字段或常数与key一起被使用
  • rows:查询一共扫描多少行(估计值)
  • filtered:查询条件过滤的数据百分比
  • extra:额外的信息

总结

学习数据库规范是非常必要的事情,可以避免建表字段难以理解,不同项目不同风格加大协作与后期接手的难度。利用好索引能显著提高查询效率,同时应熟悉各种导致索引失效的情况。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值