mysql数据库设计规范

一、数据库设计规范
1.使用innodb引擎
2.数据库和表的字符集统一使用utf8
3.所有表和字段添加注释
4.单表数据量控制<500w
5.谨慎使用mysql分区,跨区查询影响性能
6.冷热数据分离,缓存
7.禁止在数据库中存储图片,文件等大的二进制数据
8.禁止在线上做数据库压力测试
9.禁止从开发和测试环境直接连线上数据库
10.禁止使用select * 查询
11.避免使用not in,会使索引失效,用not exists代替
12.避免使用子查询,尽量转化为join操作,因为子查询的结果集没有索引
13.使用in代替or
14.where从句中禁止使用函数转换和计算

二、数据库字段设计规范
1.选择符合存储需要的最小的数据类型
2.避免使用text,blob数据类型,因为他们不支持内存临时表
3.避免使用ENUM类型,因为ENUM类型的order by操作效率低
4.尽可能把所有列定义为NOT NULL
5.使用timestamp或datetime类型存储时间
使用字符串存储时间不容易计算和比较,还占用更多的空间
6.同财务相关的金融类数据必须使用decimal类型

三、数据库索引设计规范
1.限制每张表的索引数量,单张表索引不超过5个
2.每个innodb表必须有个主键
3.避免使用双引号的查询条件

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

sql注入

反引号是个比较特别的字符,下面记录下怎么利用0x00SQL注入反引号可利用在分隔符及注释作用,不过使用范围只于表名、数据库名、字段名、起别名这些场景,下面具体说下1)表名payload:select\from\users\whereuser\_id1limit0,1;!(https://o

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )

Python3:sqlalchemy对mysql数据库操作,非sql语句

Python3:sqlalchemy对mysql数据库操作,非sql语句python3authorlizmdatetime2018020110:00:00coding:utf8'''