开发规范 字段设计规范 所有整数类型的字段推荐只使用 INT 或者 BIGINT。 浮点类型推荐使用 DECIMAL 。 时间字段使用时间日期类型,不要使用字符串类型存储。 所有需要精确到时间(时分秒)的字段均使用 DATETIME,不要使用 TIMESTAMP 类型。 仅当字符数量可能超过 20000 个的时候,才建议使用TEXT类型来存放字符类数据。所有使用 TEXT 类型的字段建议和原表进行分拆,与原表主键单独组成另外一个表进行存放。 不建议使用 ENUM、SET 类型,尽量使用 TINYINT 来代替。 索引设计规范 选择区分度大的列建立索引,不在低基数列上建立索引。低基数列如:性别,是否是 XXX。 单张表的索引数量控制在 5 个以内,避免索引冗余。 索引中的字段数建议不超过 5 个。 唯一索引建议由 3 个或更少的字段组成。 尽量不要在频繁更新的列上创建索引。 尽可能地将使用频率高的,经常被点查使用的列排在复合索引靠前的位置,将经常进行范围查询的列排在后面。 很长的 VARCHAR 字段建立索引时,指定索引长度,没必要对全字段建立索引,根据实际文本区分度决定索引长度即可, 例如 idxtablename (name(10))。 定期删除长时间未使用过的索引。 ORDER BY,GROUP BY,DISTINCT 的字段需要添加在索引的后面,形成覆盖索引。 新的 select, update, delete 上线,都要先执行 explain 命令,观察执行计划是否有异常情况发现,以确保索引的正确性。 不建议在 where 条件索引列上使用函数,会导致索引失效,如 lower(email)。 业务语句中使用 like 模糊匹配时 % 不要放首位,以免导致索引失效,或者使用时结合其他有效的约束条件。