MYSQL引擎,事务,索引
什么是储存引擎?
又叫表的储存方式。常用的分为三种 myisam,innodb,memory
myisam会将一张表分为字段,内容,索引三个文件来表示。这种储存方式是可以被压缩的,并且节约内存。但是这种储存方式不支持事务。
表创建的起初,默认的储存引擎为innodb,这种储存方式非常的安全因为数据库崩溃后可以自动恢复,而且支持事务,但是这种储存方式效率不是很高,不能很好的节约空间
memory内存储存,这种储存方式效率非常快,因为数据跟索引都存在内存中。但是数据断电就会消失。(内存可以直接直接访问,不用跟硬盘进行交互)
什么是事务?(重点)
事务其实就是一个完整的业务逻辑。拿转账来说没如果a给b转账100.这就是一个完整的业务逻辑
什么是索引?
mysql数据库的索引是添加在字段上面的,作用是为了提高表的查找效率,类似于一本书的目录、
索引的实现原理类似于java的二叉树。
(注意)一张表的主键默认会添加索引,或者一张表的字段如果有unique约束的话也会自动添加索引。另外
在任何的数据库当中,任何一张表的
任何一条记录在硬盘储存上都有一个硬盘的物理储存编号
如果一张表的主键id为
id 物理储存编号
1 0*1111
3 0*222
2 0*333
5 0*444
4 0*555
在mysql中,索引事一个单独的对象,不同的储存引擎以不同的形式存在。但是,无论索引储存在哪里,索引在mysql中都是以一个树
的形式存在的
它会转换为类似于二叉树的样子就是1作为顶部,其他的比1小的排在左边,比1大的排在右边。在储存的同时,对应的id的物理储存编号
也会储存进去
如果想查找id为5的主键时
select * from 表名 where id字段=5;
mysql发现id字段上面有索引对象的时候,会通过索引对象快速定位为id为5的位置
定位成功后得到物理储存编号,立刻转换sql语句为
select * from 表名 where 物理储存编号=0*444
然后通过硬盘的储存编号直接定位实现查找
总结
当你给字段添加索引的时候,那么该字段会变成一棵二叉树的形式,目的是为了缩小扫描范围
然后通过id找到物理储存编号后直接定位
如果想给上面的一张表jon字段创建索引的sql语句为
create index emp_job_index on emp(job);即可
create index 表名_添加索引的表字段_index on 表名(添加索引的表字段);
删除索引的语法为
drop index emp_job_index on emp;
drop index 表名_删除索引的表字段_index on 表名;
索引失效?
模糊查询在以%号开始的时候索引会失效。