mysql数据库优化

表的优化和类型选择

设计表的原则

  1. 定长和变长要分离
    id int,4 个字节,char(4) 4个字节,time 都是定长的
    varchar text blob 这些是不定长的单独放一张表,通过主键关联起来

    分开放置的主要原因是,如果是定长,那个可以通过计算,快速定位到数据在硬盘的位置,速度会快很多。

  2. 常用的字段和不常用的字段要分离
    结合具体的业务,用的多的字段单独摘出来,可以减少查询时候查询到哪些不常用的字段造成查询速度过慢

  3. 使用冗余字段
    有的时候表的不用分那么细,比如一个论坛,他要展示各个模块每天新发的帖子数量,可以在表中直接添加一个字段用来记录数量,虽然这个字段可能和其他的表冗余,但是在查询的过程中就不需要查其他表,增强了性能。

列选择的原则

  1. 字段类型的优先级
    按照如下的优先级

    整型>date,time>enum,char>varchar>blob,text
    

    列的特点:

类型特点
整型定长,没有国家地域之分,不用考虑字符集
比如 1,2,3,4 和 a,b,c,d,后者在排序的时候要去考虑字符集和校对集 ,所以就会比较慢
time定长,运算快,但是sql写起来不方便
enum枚举类型,能约束值,但是在和char进行连查的时候要经历,串和值的转化
char定长,要考虑字符集和校对集
varchar不定长,要考虑字符集和校对集,速度慢
text/blob无法使用内存临时表,(排序操作只能在磁盘上进行)
  1. 字段在设计的时候越短越好
    越长,计算的时候消耗的内存空间就越大,所以要尽量的小
  2. 能不用null就别用
    字段允许为null,在索引的时候就需要特殊的标记,消耗性能。

索引优化策略

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值