数据库表设计

学习原因 我写了好多都小项目 感觉再数据库上面一点过要设计好 不然写到一半就发现问题 要改这改那 有时候 会整表作废 所以我要去学一下 再数据库设计上面要做好 做到防bug于未然

  • 糟糕的数据库设计:数据冗余 ,数据的删除插入都麻烦【自动频闭物理外键的使用】

  • 良好的数据库设计:节省内存空间 ,保证数据库的完整性 方便我们开发系统

  • 实际开发中

  • 需求分析:根据需求进行分析

  • 概要设计 :设计数据库

  • 索引设计
    红黑树 和二叉树 红黑数 一个父节点下面分两个小节点 左边的小于父节点 右边的大于父节点 一层一层向下展开
    缺点:无论是红黑树 还是 二叉树 如果查询的数据一直往下展开 会导致 io占用内存变大 一个io占用4k内存

mysql 采用的是b+数
索引 :在数据库中的主键也是索引 本质就是 一个一个的指针互相去指

索引会使用分页(一页是16kb) ,在上面有个页目录 ,页目录中储存每页的第一个索引数和指针(指向该页),如果页目录超过限定的范围就会进行再次分页,将分页所得的信息又放到上一个目录中去 ,一个写索引数 ,一个写指针 可以说b+数是从下往上搭建 最底层的就是数据 ,上面的就是页信息

聚集索引:会将整行的数据存储到索引的叶子节点中(聚集索引一个表中只会有一个 默认为主键 )

  • 普通索引:只会存储索引列 会将数据储存到一个行号
  • 覆盖索引:查询列和索引列相同就会走
  • 如果查询的数一个是索引数 另一个不是索引数 结果有可能差索引 也有可能走普通查询,因为mysql中有索引优化器,会自动判断那个查询的速度快,那个快就会走哪个

我们查询的时候要尽快多的去查询我们我们创建的索引
查询索引然后去表中查找的我们叫他回表

mysql查询优化

  • 我们要使用确定的列名 而不使用" * "号 (用* 号不会去走索引表,而去查全表)
  • 尽量少使用嵌套子查询 会消耗大量的cpu资源(如:查询一个信息 然后用这个信息去查询)
  • 在查询表时 不要采用逻辑运算 逻辑运算在代码中去解决
  • 合理的使用索引
  • 使用explain可以查询这张表是否用到了索引
  • 尽量使用全局匹配 少用like 模糊查询
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值