SQL | 数据库优化
其他
2020-03-23 10:37:30
阅读次数: 0
数据库优化
- 选择正确的数据库存储引擎
- 优化字段的数据类型
- 为搜索字段添加索引
- 尽量避免使用select *
- 使用Enum(实际存储的tinyint)而不是varchar
- 尽可能的使用not null
- 尽可能固定长度
- 关键字大写
- 少用子查询
- 应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描
- 应尽量避免在 where 子句中使用 != 或 <> 操作符,否则将引擎放弃使用索引而进行全表扫描
- 应尽量避免在 where 子句中使用 or 来连接条件,如果一个字段有索引,一个字段没有索引,将导致引擎放弃使用索引而进行全表扫描
- in 和 not in 也要慎用,否则会导致全表扫描
- 对于连续的数值,能用 between 就不要用 in
- 应尽量避免在where子句中对字段进行函数操作,这将导致引擎放弃使用索引而进行全表扫描
- 不要在 where 子句中的“=”左边进行函数、算术运算或其他表达式运算,否则系统将可能无法正确使用索引
- 不要有超过5个以上的表连接(JOIN)
- 尽量避免大事务操作,提高系统并发能力
- 在oracle尽量避免使用游标,因为游标的效率较差
- 选择合适的数据库引擎(innodb支持事务,支持行锁,支持外键(通常不设置外键,在程序中保持数据的一致性)。myisam不支持事务,支持全文索引,支持表锁,不支持外键,查改速度快。memory数据变化频繁,不需要入库,查改极快)
- 创建合适的索引
- 读写分离,主数据库用于写,从数据库同步主数据库数据通过负载均衡用户读
- 使用缓存,一级缓存,二级缓存,第三方缓存(redis)
- 分表(一、垂直分表,二、水平分表1.按时间分表(实效性)2.按区域范围分表(严格在自增的ID)3.hash分表)
发布了28 篇原创文章 ·
获赞 13 ·
访问量 7829
转载自blog.csdn.net/y1534414425/article/details/104585854