抱歉,您的浏览器无法访问本站

本页面需要浏览器支持(启用)JavaScript


了解详情 >

Mr.wang

Time flies and people come and go

记录sql学习笔记

Mysql命名规范

数据库名

不可使用数据库关键字作为数据库对象

命名应该按实际开发需要建立

1
2
w_user(用户数据库)
- user_account(账户表)

临时表命名

临时表以tmp为前缀并以日期为后缀

备份表以bak为前缀并以日期为后缀

所有存储相同索引的表 需要保证列名列类型必须一致

UTF8中的汉字占三个字节 ASCII码占1个字节

建表需要添加表和列的备注

数据库限制

单表数据量大小限制为 500万以内 性能更佳

单表数据量最大行数无限制 取决存储设置和文件系统

限制最多存储4096列(占用内存,IO占用)

每一行数据不能超过6556字节

冷热数据分离

禁止在表中建立预留字段
语义不明,类型不清

修改时,会对表进行锁定

禁止在数据库存储图片,文件等二进制数据

存储链接

禁止在线上做数据库压力测试

禁止开发环境,测试环境直连生产环境

Mysql索引设计规范

每个表必须有一个主键

不使用更新频繁和多列的列

不使用UUID,MD5,HASH,字符串作为主键

建议使用自增ID值

限制每个表索引数量,单表索引不超5个

禁止给表的每一列都建立单独索引

索引列的顺序

区分度最高的列反正联合索引的最左侧

尽量把字段长度小的放在联合索引最左侧

最频繁的列放在联合索引左侧

避免建立冗余和重复的索引

尽量避免使用外键

Mysql数据库字段设计规范

优先存储需要的最小数据类型

1
2
3
将字符串转化为数字类型存储
INET_ATON("255.255.255.255") = 4294967295
INET_NTOA(4294967295) = "255.255.255.255"

varchar(n)中的n代表是字符数,不是字节数

避免使用TEXT BLOB数据类型

建议将这些类型分离到单独的扩展表中

避免使用ENUM数据类型

修改时,需要使用ALTER语句

ORDER BY操作效率低 需要而外操作

禁止使用数值作为枚举值

尽可能把列定义为NOT NULL(非空)

金额相关的字段使用 decimal类型

使用datetime或timestamp类型存储时间

开发规范

预编译语句进行操作

避免数据类型隐式转化

禁止使用select *查询 及没有子段列表的insert操作

优先利用表上已经存在的索引

操作行为规范

超100万行的批量操作写,要分批多次进行操作

评论