zoukankan      html  css  js  c++  java
  • MySQL使用规范

    一、    表设计类

    强制类规范

        1. 创建表的存储引擎必须是InnoDB。

        2. 每个表必须显式的指定一个主键。

        3. 不允许使用联合主键。

        4. 不允许使用外键。

        5. 不允许存在和主键重复的索引。

        6. 自增长字段必须是主键或唯一索引。

        7. 不允许在数据库中存储诸如图片,影像之类的二进制数据。

        8. 不允许使用TEXT类型字段

        9. 建表时不允许显式的指定除了utf8之外的其他字符集。

        10. 对于所有声明为NOT NULL的字段,必须显式指定默认值。

    11. 必须包含时间戳字段DataChange_LastTime,定义默认值为CURRENT_TIMESTAMP和on update CURRENT_TIMESTAMP,并添加索引。

    12.不要使用系统或者常见的名称作为表名 如order

    建议类规范

        1. 建议使用自增长字段作为主键。

        2. 对较长的字符类型,如果需要索引,则建立前缀索引。

        3. 不建议在数据库存放日志。

        4. 建议将字段都定义为not null。

        5. 选用能满足需求的最小类型。

        6. 避免使用保留字命名DB对象。

        7. 对表和字段都添加备注说明。

    二、    SQL类

    强制类规范

        1. 禁止使用子查询。

        2. 禁止使用select *,必须指定需要的字段。

        3. update/delete只能单表操作,不允许多表关联,不允许用子查询,且一定要带where条件。

        4. insert语句要显式指定插入的列名,且不允许使用insert .... select的形式。

        5. 不允许使用存储过程、存储函数、触发器和视图。

        6. 单条查询语句中,不允许出现多于一次的join。

        7. 不要在where后的筛选字段上做运算。

    建议类规范

        1. 尽量不要在数据库里做运算。

        2. 尽量不要做‘%’前缀模糊查询,如 like '%name'。

        3. 不要使用大偏移量的limit分页。

        4. 连接MySQL不要设置成autocommit=0。

        5. 批量insert语句最好采用bulk insert的方法,如insert into table(xxx) values (xxx),(xxx)。

        6. update/delete尽量根据主键进行操作。

        7.  尽量减少count()的使用,尤其是用来频繁获取全表记录数。

        8. 使用group by时,如无排序的需求,建议加order by null。

        9.  Join中使用的关联字段使用统一数据类型。

  • 相关阅读:
    LeetCode——Generate Parentheses
    LeetCode——Best Time to Buy and Sell Stock IV
    LeetCode——Best Time to Buy and Sell Stock III
    LeetCode——Best Time to Buy and Sell Stock
    LeetCode——Find Minimum in Rotated Sorted Array
    Mahout实现基于用户的协同过滤算法
    使用Java对文件进行解压缩
    LeetCode——Convert Sorted Array to Binary Search Tree
    LeetCode——Missing Number
    LeetCode——Integer to Roman
  • 原文地址:https://www.cnblogs.com/mistor/p/6160795.html
Copyright © 2011-2022 走看看