index:索引
数据库的索引是数据库管理系统里面经过 排序的数据结构
索引服务对象是select 查询
更新语句其实是先查出数据,更改数据然后返回磁盘,如果我们对查询做了优化,那么更新,删除,都会变快,它是数据结构,必然占据空间,是一个典型的空间换时间的一个案例
索引的话其实是一个 key value的值,如图:

值的话对应的是一条数据的磁盘地址,然后键的话就对应的是键值
索引的创建方式:
一:SQL语句创建
ALTER TABLE user_innodb ADD INDEX in_name(name)
()中的name其实就是我们的索引要绑定得字段
二:建表的时候再直接把索引给加上,去指定索引
三:用界面话工具去指定索引
索引类型:
一:普通索引
二:唯一索引 +唯一约束
三:主键索引 +非空约束
四:全文索引
特殊的sql
select *from 表名 where match(字段名) against(‘河南牧业经济学院’ IN NATURAL LANGUAGE MODE);
一般我们用 es slor引擎
什么数据结构才能帮助我们快速检索数据呢?
要想用到检索,必须要有序,其实索引用的就是二分折半查找
有一种数据结构就符合这种特点,那就是二叉查找树

二叉查找树左叶子节点小于父节点,右叶子节点大于父节点
如果就是二叉查找树就是一直在一边进行排列,比如斜树,

这样就成了单链表的结构了
那么二叉树将变得毫无意义,所以如何解决呢?
我们用平衡二叉树(Balanced Binary Search Tree)又称AVL树

那么平衡二叉树如何解决这一问题的呢?其实用的就是二叉树左旋还有右旋
一旦发现左左型的数据结构就会右旋

一旦发现右有型的数据结构就会左旋

innob存储引擎一次从磁盘拿16k数据到内存
16K=16384字节 redis就是16384个槽位
用二叉树太浪费空间,所以我们用多叉树,多叉树可以分很多子树

B树(多叉树):通过不断分链来保证这种数据结构
不断在分裂,合并来保证我们的数据存储

Mysql中用到的B树:BTREE

B树结构:

B+树:

第三层是Innodb存储数据
Innodb中不支持哈希索引