MySQL使用规范建议 索引设计规范 单表的索引数量最好不超过5个,单个索引中的字段数最好不超过5个,避免因长时间锁定数据导致内存、连接消耗过多等问题。 确保索引字段长度固定且不宜过长。过长的索引字段会占用更多磁盘空间,并影响索引的性能。 避免冗余索引,即存在两个索引 (a,b) 和 (a) 的情况,若查询条件为a列,只需建立 (a,b) 索引即可,不需要额外建立 (a) 索引。 对于高过滤性的字段,考虑在其上加索引。高过滤性字段的索引可以提高查询效率。 注意选择性和数据类型。选择性高的字段和合适的数据类型可以提高索引效果和查询性能。 合理利用覆盖索引来减少I/O开销,通过创建包含所需列的复合索引,避免回表操作。 开发使用规范 在处理复杂运算或业务逻辑时,优先考虑在业务层实现,而非在SQL中进行。合理选择分页方式以提高分页效率,避免使用跳跃式分页。 在事务中使用更新语句时,尽量基于主键或唯一键进行操作,避免产生间隙锁和死锁。 尽量避免使用外键和级联更新,应该在应用层处理外键关系。 减少使用in操作,集合元素数量不应超过1000个。 对于批量数据操作,可以适度采用批量SQL语句,例如使用insert into...values语句批量插入数据,但不宜超过100个。 避免使用存储过程,存储过程难以调试、扩展和移植。 避免使用触发器、事件调度器和视图来实现业务逻辑,这些应该在业务层处理,避免对数据库产生逻辑依赖。 避免使用隐式类型转换,了解类型转换规则,确保比较操作符两边的数据类型一致,避免影响查询性能。 在一个事务中,尽量控制SQL语句的数量,不超过5个,避免长时间锁定数据、内存缓存问题和连接消耗过多。 利用覆盖索引来进行查询操作,避免回表。