MySQL优化
1.性能优化:
1.1 表结构优化(下述建议针对数据量巨大,每一点空间都需要节省的情况,当然在设计初期能考虑到以下建议最好)
A:字段设计优化
1.1.1 整数类型:
1.对于整数int类型,数据量较大的情况下建议区分tinyint,int,bigint,三者所占据的空间有很大的差别,比如年龄,用tinint就可以了,没必要用后面两者,年龄再大也不过一百。
2.能确定不会使用负数,建添加unsigend定义,也是有效利用空间,比如还是年龄,tinint最大127,使用无符号的tinint最大值就变成255,就更加恰当。
3.固定精度的小数,不建议decimal,建议乘以固定倍数转成整数,可以大大大节省空间。
1.1.2 字符类型:
1. 定长字段,建议char类型
2. 不定长尽量varchar,且仅仅设定设当最大长度
3. 万不得已不使用text类型,其性能比varchar还要低
4. 建议使用整数存储定长字符,比如ip
1.1.3 时间类型
1. 尽量使用timestamp类型代替datetime, 其只占datetime的一半空间,但timestamp有一个特点就是不同时区查出来的不一样,还可以设置是否更新数据时自动更新时间。
2. 对于精确到 天的类型,用date类型就行只占三个字节,比timestamp还少
B:适当拆分:对于不经常查询的字段,尽量拆分出来放在另一个表,这样IO次数也会减少
C:适当冗余:对于频繁查询且需关联两张表查询的可以将其中一张表的某些字段适当冗余到一张表,但是要注意对于修改操作更加麻烦
D:尽量使用not null,NULL比较特殊,难以优化
1.2 索引优化
1.2.1 对于联合索引,遵循最左前缀原则
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
2019-10-11 三、计算机体系结构