规则

一、建表规则

    1.表必须有create_time和update_time字段,并且这两列上都有索引 

    2.auto_increment 默认情况下为1开始 

    3. 默认字符集为utf8/utf8mb4,不需要指定表或者列的字符和校验规则

        bad case : create table table_name 

        (name varchar(20) charaset utf8 collate utf8_general_ci not null default ‘’ comment ''

             ) DEFAULT CHARSET=utf8 

        good case : create table table_name 

             (name varchar(20) not null default comment '')

    4.表和列的注释要有表和列的作用,谁创建的,创建时间。 创建时间必须为当天时间,不要从沙盒导出来就复制到tb上。

        例如:

            create table table_name 

               (name varchar(20) not null default ‘’ comment '名字|张三|20180613'

               ) comment = '表是干什么的|谁创建的|当天的日期' 

    5.列必须明确指定为not null,不允许出现default null 的字样,看上面的例子。

        1)NULL的列使用索引,索引统计,值都更加复杂,MySQL更难优化

        2)NULL需要更多的存储空间

        3)NULL只能采用IS NULL或者IS NOT NULL

    6.必须有主键自增列最好用bigint类型 

          1)int有负号最高2147483647、无负号最高4294967295   , bigint 有负号9223372036854775807 无负号18446744073709551615

          2)无主键的大表在row模式下做delete操作偶发从库会夯住

    7.精确度要求高的要用decimal 

    8.字段类型的长度满足就好不要写的特长

         bad case: name varchar(100)

         good case:name varchar(10) 

    9.正常表的列个数不超过30 

    10.大字段列(text,blob)尽量单独建个表存放

    11.禁止使用外键控制关系,由程序实现

          影响性能,易造成瓶颈

    12.建议使用TINYINT来代替ENUM

         ENUM增加选项是要做ddl操作。

    13.关键的业务环节,需要有单独的时间和描述字段,不能复用。

二、索引规则

    1.单张表索引数量建议控制在5个以内

        1)多了会造成数据库不能选择正确的索引

    2.组合索引字段数不建议超过5个

        1)如果太多索引失效

    3.不要在频繁更新的字段上建立索引 

    4.联合索引最左前缀原则,避免重复建设索引

三、命名规则

    1.用户名不得超过16个字符 

    2.表名列名要清晰,让人一看就明白 

    3.索引名字加个前缀idx_,唯一索引uniq_

        idx_create_time, uniq_create_time

    4.备份表的名字在表名后面加上日期和名字

        goods_order---->goods_order_20180613_majianli

四、sql规则

    1.禁止使用select * 需要哪些字段写哪些字段 

    2.JOIN关联查询时要确保关联条件的类型是一致的,并且两列都是有索引的

  left join 的关系是N:1

        join的关系是N:N 

    3.避免隐式类型转

        phone varchar(20)

        bad case : select name from tabe_name where phone = 1366666666;

        good case : select name from tabe_name where phone = '1366666666';

    4.不要在索引列做计算和加函数使用

    5.禁止使用select * 查询

        *会增加cpu、io、内存、带的消耗

        如有覆盖索引*不会使用到

    6.insert操作必须指定字段

        表结构有变动时不会有影响

    7.合理使用子查询,不要太相信网上传言MySQL的子查询不好。

    8.学会看执行计划,不是走索引了就可以的。

        这个很重要 

    9.一直都在说拒绝3B

        big sql

        big transation

        big batch

        及其复杂的sql放在对应功能的数据库上做运算 

    10.添加列索引等

          添加多个列/索引 对应一个表时用一个alter语句

          alter  table_name add name1 。。。。。。

          alter  table_name add name2 。。。。。。

          alter  table_name add name3 。。。。。。

          改成:

          alter  table_name add name1 。。。。,add name2 。。。。,add name3 。。。。;

四、其他规则

    1.引擎使用innodb 

    2.字符使用utf8或者utf8mb4 

    3.禁止使用存储过程,视图,触发器等 

    4.不使用的rds自建数据库的,禁止使用yum安装mysql。要和线上版本一致。


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26909803/viewspace-2649305/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/26909803/viewspace-2649305/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值