学习数据库表优化思路笔记

数据库表优化思路

优化的总体思路可以总结为以下几点:

1.表结构设计要合理:尽量避免不必要的字段,数据能拆分则拆分。

2.索引要高效:设计合理的索引结构,避免索引失效。
3.SQL要优化:查询条件精准,尽量减少全表扫描。
4.分库分表:通过水平拆分、垂直拆分减少单表数据量。
5.缓存和异步化:减少对数据库的直接压力。

表结构设计优化


1. 精简字段类型


能用INT的不要用BIGINT。
能用VARCHAR(100)的不要用TEXT。
时间字段建议用TIMESTAMP或DATETIME,不要用CHAR或VARCHAR来存时间。

2. 表拆分:垂直拆分与水平拆分

垂直拆分
当表中字段过多,某些字段并不是经常查询的,可以将表按照业务逻辑拆分为多个小表。
水平拆分
当单表的数据量过大时,可以按一定规则拆分到多张表中。比如日期分表。

 

索引优化


1. 创建合适的索引


为高频查询的字段创建索引,比如主键、外键、查询条件字段。


2. 避免索引失效


别对索引字段使用函数或运算。如:SELECT * FROM orders WHERE DATE(order_time) = '2023-01-01';
注意隐式类型转换。如:SELECT * FROM orders WHERE user_id = '123';

 

SQL优化


1.减少查询字段,只查询需要的字段,避免SELECT *。
2.分页优化,深度分页时,使用“延迟游标”的方式避免扫描过多数据。

 

分库分表


1. 水平分库分表
当单表拆分后仍无法满足性能需求,可以通过分库分表将数据分散到多个数据库中。
常见的分库分表规则:按用户ID取模,按时间分区。

 

缓存与异步化


1. 使用Redis缓存热点数据
对高频查询的数据可以存储到Redis中,减少对数据库的直接访问。
2. 使用消息队列异步处理写操作
高并发写入时,可以将写操作放入消息队列(如Kafka),然后异步批量写入数据库,减轻数据库压力。

posted on 2025-01-22 10:38  御行所  阅读(100)  评论(0)    收藏  举报

导航