多年msyql使用积累的一些最基本的坑,简单记录一下:
1.访问控制(User和主机);
2.禁止业务系统使用root,root应作为保留管理员账号;
3.字符集建议都设置为utf8mb4;
4.表字段不得超过30个,且单表数据最好不要超过400w,大数据进行合理分表(水平/垂直);
5.表必须有主键,且设置id为自增主键;
6.库表字段等要规范且有意义的命名,使用蛇形命名且禁止大写;
7.引擎类型一律为InnoDB,如无特殊需求。禁止使用InnoDB/MyISAM/Memory以外的存储引擎;
8.表字段禁止NULL,必须NOT NULL default 默认值,NULL值会存在占用额外存储空间、索引失效等其他问题;
9.字段最好不要出现blob、text,实在需要时请使用拓展表;
10.唯一索引以“uq_”开头,普通索引以“idx_”开头;
11.索引个数最好不要超过5个;
12.join必须使用索引,in查询不要超过1000,合理使用join与in(笛卡尔积与子查询不用索引);
13.禁止写select *,同理禁止insert into t1 values(…);
14.UNION ALL替代UNION;
15.DML语句where条件必须用索引,注意表锁问题;
16.合理使用索引,注意索引左原则、索引失效,null值等的影响;