2021-3-18 学习redis之浅谈mysql数据库表设计的几个要点

9 篇文章 0 订阅
2 篇文章 0 订阅

mysql数据库表设计的几个要点

1、表设计过程中应该注意的点:数据类型
1)更小的通常更好控制字节长度(长的会浪费内存)
2)使用合适的数据类型

例如:
1)增加status字段最好用tinyint(只占8个字节,所占的字节内存更小,更省空间),
2)char(1024)与varchar(1024)的对比:char就会指定1024个内存空间进行分配,varchar是可变长的,char用于定长数据存储会比varchar节省空间,例如:uuid(32)可以用char(32)

3) 尽量避免使用null 要使用not null default ’ ’ / not null default 0

null 的列会让索引统计和值比较都更复杂,可为null的列会占据更多的磁盘空间,在Mysql中也需要更多复杂的处理程序

2、索引设计过程中应该注意的点
1)选择唯一性索引

唯一性索引的值是唯一的,可以更快速的通过该索引来确定某条记录,保证物理上面唯一,唯一性索引效率最高

2)为经常需要排序、分组和联合操作的字段建立索引

经常需要ORDER BY、GROUP BY、DISTINCT和UNION等操作的字段,直接排序操作会浪费很多时间

3)常作为查询条件的字段建立索引
4)数据少的地方不必建立索引

索引很占内存,不能每个字段都加索引(例如:status字段,值很少如1,2,3,只能排出1/3的效率,浪费存储空间)

3、sql优化,用explain查数据库的执行计划

explain select * from score where user_id = 1;

注意:扫描行数(rows)会影响CPU运行,占用大量内存,当扫描行数特别多时要考虑是否需要重构sql

1)能用 between 不要用 in
2)能用 distinct 不要用 group by
3) 避免数据类型强转

select * from score where user_id = “1”;

(user_id是int类型,但传入的是string类型,虽然可以查询,但效率会很慢)

4)用explain查看数据库的执行计划
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值