前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL学习笔记汇总(五)——索引、视图、数据库设计三范式

MySQL学习笔记汇总(五)——索引、视图、数据库设计三范式

作者头像
百思不得小赵
发布2022-12-01 14:06:23
4730
发布2022-12-01 14:06:23
举报
文章被收录于专栏:小赵Java总结

一、索引

索引被用来快速找出在一个列上用一特定值的行。没有索引,MySQL 不得不首先以第一条记录开始,然后读完整个表直到它找出相关的 行。表越大,花费时间越多。 添加索引是给某一个字段,或者说某些字段添加索引。

  • 什么时候考虑给字段添加索引

数据量庞大。(根据客户的需求,根据线上的环境) 该字段很少的DML操作。(因为字段进行修改操作,索引也需要维护) 该字段经常出现在where子句中。(经常根据哪个字段查询)

主键和具有unique约束的字段自动会添加索引。根据主键查询效率较高。尽量根据主键检索。

  • 创建索引对象:
代码语言:javascript
复制
create index 索引名称 on 表名(字段名);
  • 删除索引对象:
代码语言:javascript
复制
drop index 索引名称 on 表名;
  • 索引的实现原理:

索引底层采用的数据结构是:B + Tree。

通过B Tree缩小扫描范围,底层索引进行了排序,分区,索引会携带数据在表中的“物理地址”,最终通过索引检索到数据之后,获取到关联的物理地址,通过物理地址定位表中的数据,效率是最高的。

  • 索引的分类:

单一索引:给单个字段添加索引 复合索引: 给多个字段联合起来添加1个索引 主键索引:主键上会自动添加索引 唯一索引:有unique约束的字段上会自动添加索引 …

  • 索引什么时候失效?

例如:进行如下查询 select ename from emp where ename like ‘%A%’; 模糊查询的时候,第一个通配符使用的是%,这个时候索引是失效的。

案例:给薪资sal字段添加索引。 添加索引前:sal语句的执行计划

添加索引:

代码语言:javascript
复制
 create index sal_emp_index on emp(sal);

添加索引后:

二、视图(view)

  • 站在不同的角度去看到数据。(同一张表的数据,通过不同的角度去看待)。
  • 创建视图,删除视图

create view 视图名 as select … drop view 视图名;

  • 对视图进行增删改查,会影响到原表数据。
  • 视图的作用

视图可以隐藏表的实现细节。保密级别较高的系统,数据库只对外提供相关的视图,只对视图对象进行CRUD。

三、数据库设计的三范式

  • 什么是设计范式? 设计表的依据。按照这个三范式设计的表不会出现数据冗余。
  • 三范式都是哪些? 第一范式:任何一张表都应该有主键,并且每一个字段原子性不可再分。 第二范式:建立在第一范式的基础之上,所有非主键字段完全依赖主键,不能产生部分依赖。 第三范式:建立在第二范式的基础之上,所有非主键字段直接依赖主键,不能产生传递依赖。

多对多设计方案:三张表,关系表两个外键。

一对多设计方案:两张表,多的表加外键。

一对一设计方案: 1.主键共享

2.外键唯一

一起加油,一起努力,一起秃见成效

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-08-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、索引
  • 二、视图(view)
  • 三、数据库设计的三范式
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档