MySQL(22)表结构的优化

  • 表的字段,尽量使用固定长度。

  • 列的先后顺序,固定长度的字段在前面。

    create table big(
    	id int not null auto_increment primary key,
        age int,
        name varchar(32)
    )
    
  • 能在内存中存储的,尽量不要放在数据库中表关联。

    角色表:
    id	title
     1   管理员
     2   超级管理员
     3   普通用户
    
    用户表:
    id		name	role_id
     1		alex	  1
     2		eirc	  1
     3		tony	  2
     4      kelly	  3
     
     这样设计,以后再查询用户信息时,如果想要看角色中文信息实,需要使用连表查询(效率低)。
    
    数据库中的用户表:
        id		name	role_id
         1		alex	  1
         2		eirc	  1
         3		tony	  2
         4      kelly	  3
    
    Python代码中维护:
        ROLE_TYPE = (
            (1,"管理员"),
            (2,"超级管理员"),
            (3,"普通用户"),
        )
        
    适用于有限的数据。
    
  • 其实也可以允许存在一定的数据冗余

    - 用户表 & 部门
    
    部门表:
    id	title
     1   开发
     2   销售
     3   运维
    
    用户表:
    id		name	depart_id
     1		alex	  1
     2		eirc	  1
     3		tony	  2
     4      kelly	  3
    
    用户表:
    id		name	depart_id
     1		alex	  开发
     2		eirc	  销售
     3		tony	  销售
     4      kelly	  运维
     
     # 浪费了一些硬盘存储,换来的查询速度快。
    
posted @ 2021-11-18 23:05  下个ID见  阅读(41)  评论(0)    收藏  举报