• MySQL开发规范


    # MySQL开发规范
    1. 命名规范
    2. 基础规范
    3. 字段设计
    4. 索引规范
    5. SQL设计
    6. 库表设计

    ### 命名规范
    - 数据库名、表名、字段名必须使用小写字母
    - 数据库名、表名、字段名禁止超过32个字符
    - 数据库名、表名、字段名必须见名知意
    - 数据库名、表名、字段名的命名需要与业务、产品等相关联
    - 数据库名、表名、字段名禁止使用MySQL保留字(保留字列表:https://dev.mysql.com/doc/refman/5.6/en/keywords.html)
    - 临时数据库、表的名字必须以tmp作为前缀,如tmp_distributor、tmp_february_promote等
    - 备份数据库、表的名字必须以bak作为前缀,如bak_accounts_users、bak_financeproducts_users等
    - 触发器名必须以tri作为前缀,如tri_experiencesend_6666等
    - 存储过程名字必须以proc作为前缀,如proc_raisetask等
    - 事件名字必须以e作为前缀,如e_distributor等
    - 视图名字必须以v作为前缀,如v_accounts_users等

    ### 基础规范
    - 全部使用innodb存储引擎
    - 表字符集统一使用UTF8字符集
    - 所有字段和表用途都需要添加注释
    - 对同一个表的多次alter操作必须合并为一次操作
    - 数据库的密码强度要求是18位数字字母字符混合密码
    - 禁止在数据库中存储图片、文件等大数据
    - 每张表数据量建议控制在500w以内

    ### 库表设计
    - 禁止使用分区表
    - 尽量将大字段、访问频率低的字段拆分到单独的表中存储,分离冷热数据
    - 采用合适的分库分表策略。例如十库百表等

    ### 字段设计
    - 所有字段均定义为NOT NULL
    - 用decimal代替float和double存储精确却浮点数.例如与金额相关的数据
    - 强烈建议使用tinyint来代替enum类型
    - 尽可能不使用text,blob类型
    - 使用尽可能小的VARCHAR类型字段。VARCHAR(N)中的N表示字符数而非字节数
    - 存储年使用YEAR类型。存储日期使用DATE类型。存储时间(精确到秒)建议使用 TIMESTAMP或者DATETIME类型。

    ### 索引相关规范
    - 索引名必须全部使用小写
    - 表必须有主键,推荐使用数字整形类型id int unsigned作为自增主键
    - 非唯一索引按照“idx_字段名称[_字段名称]”进行命名。例如idx_name
    - 唯一索引按照“uniq_字段名称[_字段名称]”进行命名。例如uniq_name
    - 组合索引建议包含所有字段名,过长的字段可以采用缩写形式
    - 不在选择性低的列上建立索引。例如性别等
    - 选择选择性高的列建立索引.组合索引中,选择性高的列放在最前面
    - 不对过长的varchar字段建立索引。考虑前缀索引,或者添加CRC32或MD5伪列并建立索引
    - 单表求MIN/MAX函数操作的字段上建立索引

    ### SQL设计
    - 禁止使用外键
    - 拆分复杂SQL为多个SQL,避免大事务
    - 获取大量数据时,分批获取数据,每次获取数据少于2000条,结果集应小于1M
    - 避免使用join和子查询。必要时推荐使用join代替子查询
    - 禁止在MySQL的where条件左边对字段进行数学运算和函数运算
    - 禁止单条SQL语句同时更新多个表
    - 禁止使用%前导查询,例如 like '%ABC',会导致SQL语句不走索引
    - 禁止使用负向查询,例如 not in、!=、not like等
    - 避免使用update...limit以及delete...limit语句

  • 相关阅读:
    jquery实现选项卡(两句即可实现)
    常用特效积累
    jquery学习笔记
    idong常用js总结
    织梦添加幻灯片的方法
    LeetCode "Copy List with Random Pointer"
    LeetCode "Remove Nth Node From End of List"
    LeetCode "Sqrt(x)"
    LeetCode "Construct Binary Tree from Inorder and Postorder Traversal"
    LeetCode "Construct Binary Tree from Preorder and Inorder Traversal"
  • 原文地址:https://www.cnblogs.com/chinaops/p/9651578.html
Copyright © 2020-2023  润新知