索引的类型

99封情书 提交于 2020-08-10 07:26:02

主键索引、唯一键索引、普通索引、全文索引、组合索引。

主键设置为自增,数据库会使用自增锁来维护主键的有序性;索引设置为自增,可以方便管理索引,否则会涉及到页分裂与列合并,影响性能

覆盖索引:一张表有两个列Id,Name,select id from table where Name = '';只需要查找Name的B+Tree不需要在去查找Id的,这种情况加做覆盖索引;

回表操作指的是InnoDb,InnoDb非主键索引存储的不是行数据,所以有回表;MyISam索引表中存储的是数据的地址,所以不存在回表;

组合索引:设计到最左匹配原则,建立索引的时候,需要注意索引列的顺序;维护一个name,age组合索引,当where条件为age=10,组合索引会失效,因为最左原则,name都没有,就没有必要查下去了,如果where name=‘aaa’,该组合索引是有效的,相当于先查name,再查age;

索引下推:简历组合索引,name,age,入下图数据,相当于对mysql索引查询的优化,索引下推之前,根据name条件查询出符合的数据,然后根据ID,在去Id索引表查询数据并比较age值;索引下推,根据name条件查询出符合的数据,在匹配age条件,符合条件的Id返回去;

 

 

持久性

通过redo log实现

数据插入数据库:数据插入会保存在用户态的某块内存中,数据积累到一定数量回进行系统调用,把数据保存到内核态的内存中,内存向内存复制,速度很快,然后调用fsync同步保存,把数据保存到磁盘中,所以一共三部,用户态、内核态、磁盘;

原子性

通过Undo log实现

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!