1、命名规范:采用清晰、描述性强的命名,避免拼音和数字开头,推荐使用小写字母和下划线,如account_number而非acc_no。索引命名应反映其类型和关联字段,如pk_account_id。
2、字段类型选择:根据数据特性选择最合适的类型,如使用INT而非FLOAT存储整数,利用VARCHAR灵活应对变长字符串,并确保长度设置合理,避免过度消耗空间。
3、主键设计:主键应选择无意义且唯一标识符,如自增ID或UUID,避免使用业务相关的字段,以减少未来变动的复杂性。
4、逻辑删除:推荐使用逻辑删除(如is_deleted标志)而非物理删除,以保持数据完整性并便于数据恢复。
5、通用字段:每张表应包含基本元数据字段,如id、create_time、modified_time等,以记录数据的生命周期信息。
6、字段数量控制:限制单表字段数量不超过20个,以提高查询效率和减少数据行的体积。
7、非空约束:除非有特定理由,所有字段应设为NOT NULL,以避免空值问题并简化查询逻辑。
8、索引策略:根据查询需求合理添加索引,但需避免过度索引,考虑字段的区分度,利用覆盖索引和复合索引来优化性能。
9、适度冗余:在不影响数据一致性的前提下,可适当冗余数据以减少表关联,提高查询效率。
10、字符集统一:整个系统应统一使用适合的字符集,如UTF-8,以支持国际化并减少编码问题。
11、注释清晰:特别是对于枚举类型字段,务必在COMMENT中详细描述每个值的意义。
12、时间类型:推荐使用DATETIME类型存储日期和时间信息,因其广泛的适用性和无关时区的特性。
13、避免存储过程与触发器:考虑到维护和扩展性,建议在应用层实现复杂逻辑,避免在数据库层面使用存储过程和触发器。
14、关系模型设计:针对1:N关系,通过外键关联表;面对N:M关系,引入关联表来桥接双方,保持数据结构清晰。
15、大字段处理:对于大文本或二进制数据,考虑存储在外部系统并仅在数据库中保留引用,以减轻数据库负担。
16、分库分表策略:根据数据规模预测,提前规划是否需要分库分表,以支持系统的水平扩展。
17、SQL查询优化技巧:
精确列选择:避免SELECT *,仅选取必需列,减少数据传输量,提升查询效率。
高效利用索引:为频繁查询和排序的字段创建索引,加速检索过程。
简化数据关系:在特定场景下,避免外键以减少复杂性和潜在性能损耗。
限制结果数量:使用LIMIT 1快速获取单条记录,减少资源消耗。
优化条件查询:用UNION代替OR连接条件,提高查询效率。
处理分页查询:优化深分页问题,考虑使用OFFSET或更高效的分页策略。
减少数据扫描:通过WHERE子句精确过滤,减少无用数据读取。
避免函数运算:在索引列上直接使用函数可能导致索引无法使用。
简化表达式:避免在索引列上使用复杂的表达式计算,维持索引有效性。
优化比较操作:少用!=和<>,这些操作符可能使索引失效。
构建有效联合索引:按查询顺序排列索引字段,遵循最左前缀原则。
索引策略:确保WHERE子句和ORDER BY涉及的列已建立索引。
批量操作:当插入大量数据时,使用批量插入以减少IO操作和提升效率。
利用覆盖索引:确保查询所需数据全部包含在索引中,避免回表查询。
分析查询计划:使用EXPLAIN分析SQL执行计划,识别并优化低效查询。




