数据库笔记04
2022/2/12 2:12:34
本文主要是介绍数据库笔记04,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
数据库笔记04
索引
- 索引是数据库表中的字段添加的,是为了提高查询效率所存在的一种机制,一张表的一个字段可以添加一个索引,当然也可以对多个字段进行添加索引,index就相当于一本书的目录,是为了缩小扫描的范围而存在的一种的机制
- MySQL在查询的方式有两种:全表扫描,按照索引进行查找
- 在MySQL中index也是需要的进行排序的,这个排序所采用的方式是一种平衡二叉树的数据结构:左大右小
- 在任何数据库中主键上都会添加索引对象,当字段上存在unique约束时,同样也会创建索引
- 在数据库中,任何一张表的一个记录都在硬盘上存在一个物理存贮编号(相当于地址)
- 在MySQL中,index是一个单独的对象,不同的存储引擎index存放在不同的位置;但是无论其存放在那个位置,其采用的数据结构都是B-tree(自平衡二叉树)
索引的过程
譬如说:要寻找字段上的某一个值,先通过index进行查找,然后查询到一个物理编号,即可通过该编号来直接查询该记录,这样的查询速度会变快,从而避免全局搜索。
添加索引的条件
- 数据庞大
- 该字段常出现在where后面,也就是说该字段经常被查询
- 该字段很少使用DML语句,因为DML语句会导致索引重构
一般不推荐添加太多的索引,因为索引也是需要进行维护的,且太多的也是会降低查询的速度,一般推荐使用
primary key
orunique
约束的字段添加index来进行查询,这样其效率会快很多
创建过程
create index index_name on table_name(column_name);
删除过程:
drop index index_name on table_name;
使用alter进行创建:(普通索引)
alter table table_name add index index_name (字段名);
创建主键索引:
alter table table_name add primary key (字段名);
创建唯一索引:
alter table table_name add unique index_name (字段名);
查看是否使用index:使用explain
关键字,后面接查询语句
create
不能创建primary key索引,而使用alter
可以创建多个
索引失效
- 在查询的过程中使用了
like
模糊查询 - 创建了复合索引,但是没有使用左边的索引
- 查询的过程中,where后面被索引字段使用了算数运算
- 查询的过程中,where后面被索引字段使用了函数
- 使用or时,只用or两边都存在索引时,才会按照索引去查询,否则就不会使用索引
索引是各种数据库中一种优化的重要手段
索引的分类
分类 | 释 |
---|---|
单一索引 | 单个字段上添加索引 |
复合索引 | 多个字段联合添加索引 |
唯一索引 | primary key字段上添加 |
主键索引 | unique字段上添加 |
唯一性比较弱的字段没有必要添加index,用处不大
视图(view)
站在不同的角度去看待同一份数据
-
创建视图:
create view view_name as 跟dql语句;
-
删除视图
drop view view_name;
-
对视图进行增,删,改,会导致原表的数据也会被更改
-
利用视图可以创建由多张表关联的视图对象
-
利用视图可以减化操作,可以减化开发的繁琐程度,使很长的一个SQL语句可以转化为视图对象从而对其进行操作,这样可以提高开发效率。
-
视图是存放在硬盘上,
-
增删改查:CRUD
DBA
- 导出:mysqldump 数据库>路径 -u XXXX -p XXXX(在命令行中)
- 导入:source:路径
数据库设计三范式
- 任何一张表都存在一个主键,每个字段都是不可再分
- 依赖于第一范式,要求所有非主键字段都依赖于主键,不能产生部分依赖
- 依赖于第二范式,要去所有非主键字段都依赖于主键,不能产生传递依赖
第二范式:一般需要外键约束来实现多对多;多对多口诀:”多对多,三张表,关系表两个外键“
第三范式:同样也需要使用外键约束来解决;
一对多口诀:”一对多,两张表,多的表加外键“
一对一:可能因为数据过多,可能需要拆分为多张表,进行连接时,需要通过外键约束和unique约束来实现一一对应。
最终还是以客户的需求作为标准,三范式只是停留在理论上的,有时可能会存在冗余(空间)换速度(时间),因为表连接过多时,查询效率会降低。这样的话编写的sql语句就会变得简单,编写难度下降
这篇关于数据库笔记04的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-01后台管理开发学习:新手入门指南
- 2024-11-01后台管理系统开发学习:新手入门教程
- 2024-11-01后台开发学习:从入门到实践的简单教程
- 2024-11-01后台综合解决方案学习:从入门到初级实战教程
- 2024-11-01接口模块封装学习入门教程
- 2024-11-01请求动作封装学习:新手入门教程
- 2024-11-01登录鉴权入门:新手必读指南
- 2024-11-01动态面包屑入门:轻松掌握导航设计技巧
- 2024-11-01动态权限入门:新手必读指南
- 2024-11-01动态主题处理入门:新手必读指南