MySQL开发规范

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 一、基础规范 1)    使用InnoDB存储引擎2)    数据库字符集使用UTF8,校对字符集使用utf8_general_ci3)    所有表、字段都尽量添加注释4)    库名、表名、字段名使用小写字母,禁止超过32个字符,须见名知意5)    非唯一索引以 “idx_字段1...

一、基础规范

 

1)    使用InnoDB存储引擎
2)    数据库字符集使用UTF8,校对字符集使用utf8_general_ci
3)    所有表、字段都尽量添加注释
4)    库名、表名、字段名使用小写字母,禁止超过32个字符,须见名知意
5)    非唯一索引以 “idx_字段1_字段2” 命名,唯一索引必须以 “uniq_字段1_字段2” 命名

 

二、查询规范

 

1)    SQL语句尽可能简单,大的SQL想办法拆分成小的SQL实现
2)    不要使用SELECT * ,查询具体要用到的字段
3)    禁止like做where条件(会全表扫描且不能用索引)
4)    除非必要,避免使用 != 等非等值操作符(会导致用不到索引)
5)    Where条件里不要对列使用函数(不会引用索引)
6)    能确定返回结果只有一条时,使用limit 1(LIMIT分页注意效率,LIMIT越大,效率越低)
7)    少用子查询,改用JOIN(子查询要在内存里建临时表)
8)    多表JOIN的字段,区分度最大的字段放在前面
9)    IN条件里的数据数量要尽量少,超过200个用EXIST代替IN
10)    Where字句中同一个表的不同字段组合建议小于5组(否则考虑分表)
11)    禁止单条语句同时更新多个表
12)    事务要尽量简单,整个事务的时间长度不要太长


三、表设计规范

 

1)    用DECIMAL代替FLOAT和DOUBLE存储精确浮点数(精确数据)
2)    使用TINYINT代替ENUM类型(便于迁移时兼容)
3)    尽可能不使用TEXT、BLOB类型(该数据类型不能设置默认值、不便于排序、不便于建立索引)
4)    同一意义的字段设计定义必须相同(便于联表查询)
5)    所有字段均定义为NOT NULL(避免使用NULL字段,NULL字段很难查询优化,NULL字段的索引需要额外空间,NULL字段的复合索引无效)
6)    表必须有主键,不使用更新频繁的列做主键、尽量不使用字符串列做主键,尽量使用非空的唯一自增键做主键


四、索引设计规范

 

1)    单表索引数量不超过10个
2)    单个字段不要超过两个索引
3)    新建的唯一索引必须不能和主键重复
4)    避免冗余和重复索引
5)    尽量不要在频繁更新的列上建立索引
6)    不在低基数列上建立索引,例如状态、类型等
7)    不在索引列进行数学运算和函数运算(参与了运算的列不会引用索引)
8)    复合索引须符合最左前缀的特点建立索引(mysql使用复合索引时从左向右匹配)
9)    重要的SQL中where条件里的字段必须被索引
10)    Where条件里的字段顺序与索引顺序无关,优化器会自动调整
11)    索引选择性= Cardinality / Total Rows,即基数 ÷ 数据行数,值越接近1说明使用索引的过滤效果越好
12)    建立索引时,务必先explain,查看索引使用情况

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
SQL 关系型数据库 MySQL
【JavaEE进阶】 数据库连接池与MySQL企业开发规范
【JavaEE进阶】 数据库连接池与MySQL企业开发规范
|
9月前
|
存储 SQL 缓存
MySQL 开发规范
MySQL 开发规范
622 0
|
存储 SQL 监控
老叶观点:MySQL开发规范之我见(更新版)
老叶观点:MySQL开发规范之我见(更新版)
133 0
|
存储 SQL 监控
老叶观点:MySQL开发规范之我见
老叶观点:MySQL开发规范之我见
106 0
|
存储 SQL 监控
MySQL开发规范之我见
MySQL开发规范之我见
108 0
|
存储 SQL 监控
MySQL开发规范之我见(更新版)
MySQL开发规范之我见(更新版)
125 0
|
存储 人工智能 Oracle
从MySQL开发规范处看创业
从MySQL开发规范处看创业
|
存储 SQL 机器学习/深度学习
|
存储 SQL 机器学习/深度学习
公司用的 MySQL 团队开发规范,太详细了,建议收藏!
数据库对象 数据库对象是数据库的组成部分,常见的有以下几种: 表(Table )、索引(Index)、视图(View)、图表(Diagram)、缺省值(Default)、规则(Rule)、触发器(Trigger)、存储过程(Stored Procedure)、 用户(User)等。 命名规范是指数据库对象如数据库(SCHEMA)、表(TABLE)、索引(INDEX)、约束(CONSTRAINTS)等的命名约定。
142 0
|
存储 人工智能 Oracle
从MySQL开发规范处看创业
从MySQL开发规范处看创业