索引与事务
编程软件: MYSQL
学习总结:
- 什么是索引?
- 索引的作用
- 怎么实现索引?
- 索引的成本和收益
- 使用场景或者使用注意事项
- 站在用户角度,怎么使用?
- 为什么需要事务?
- 对于用户,怎么使用事务?
①
- 什么是索引?
索引是一种特殊的文件,包含着对数据表里所有记录的引用指针。可以对表中的一列或多列创建索引,并指定索引的类型,各类索引有各自的数据结构实现。(具体细节在后续的数据库原理课程讲解)
②
- 索引的作用:
数据库中的表、数据、索引之间的关系,类似于书架上的图书、书籍内容和书籍目录的关系。
索引所起的作用类似书籍目录,可用于快速定位、检索数据。
索引对于提高数据库的性能有很大的帮助
③
- 索引大概怎么做到的?
1.搜索树:
1.通过index_name索引,找到黄蓉的信息 O(log(n))
2.根据上一步找到的信息,直接访问硬盘上黄蓉的完整数据 O(1)
把查询效率从O(n)提升到了O(log(n)) 100W为例 100W -> 20
④
- 索引的成本:除了主数据,需要另外维护一套或者多套数据(搜索树)
1.空间的成本(保存搜索树)
2.数据修改时间上的成本(插入 删除 修改时),除了设计主数据,还得设计索引数据
⑤
- 收益:索引设计到的字段进行查询,速度明显提升
⑥
- 使用场景或者使用注意事项:
1.数据量足够大时,在用索引(超过10W数据就可以考虑)
2.查询频繁的字段建立索引
3.查新的频次远远大于增删改的频次
4.索引相关的字段不要太大
⑦
- 站在用户角度,怎么使用?
- ①.MySQL提供的索引有以下几类:
1.主键primary key —通过主键查询,效率很高
2.伪意见unique —天生带着索引
3.普通索引index | key,没有数据约束含义,单纯为了提升查询效率
4.全文索引,和刚才讲的原理不是一回事,支持类似搜索引擎功能使用,基本跳过 - ②.如何创建索引 – SQL语法(了解即可)
建表修改表是,添加索引
create table employeess (
id int primary key,
name varchar(20),
salary int,
index (name) --创建一个索引结构,把表中的name,作为索引树的key
);
⑧
- 查看具体内容
show index from employeess;
--建好索引之后,直接Insert/Update/Delete即可,和平时一样,没有变化
--MySQL内部会判断是否可以用上索引,并且选择合适的索引,提升速度
show index from employeess\G
⑨
- 为什么需要事务?
有些场景中的一组SQL之间是有关系的,一荣俱荣,一损俱损,所以需要一个概念()包括实现,把这些SQL组合起来。
组合起来的者须SQL就被称为事务
⑩
-
对于用户,怎么使用事务?
BEGIN 一组打包的SQL commit:这组SQL一起生效!!成功
rollback:手动,这组SQL,都没有生效!!失败