索引:索引(Index)是帮助MySQL高效获取数据的数据结构。
索引的优点:
大大减少了服务器需要扫描的数据量
帮助服务器避免排序和临时表
将随机IO变为顺序IO
索引的优点:
大大减少了服务器需要扫描的数据量
帮助服务器避免排序和临时表
将随机IO变为顺序IO
常见索引类型
B+树索引
全文索引
哈希索引
--------------------------------------------------------------------------------------------------
B+树索引
特性:所有记录节点都按照键值的大小顺序存放在同一层叶子节点上,由各叶子节点指针进行连接。
当不断增加数据,这个所插入的页会不断分裂页面。页面分裂主要分成向右分裂和中间分裂。向右分裂的时候只会增加一个页面,中间分裂时会出现一些冗余叶子点。所以,尽量按照有序增加B+树。
中间分裂影响:
1,将会占用更多的磁盘空间
2,中间分裂会产生数据移动的磁盘操作,会影响插入性能
3,中间分裂会产生碎片,产生磁盘碎片。
聚集索引
聚集索引即主键。InnoDB存储引擎表是索引组织表,即表中数据按照主键顺序存放。
主键的叶子节点存储的是数据。
这是主索引和辅助索引的搜索的过程。
如果你直接搜索自增ID,那么mysql会按照绿色的步骤搜索到数据。如果你按照里面的搜索非主键,那么就会按照红色的步骤搜索到数据。所以按照自增ID 来建立索引会非常好。
联合索引
有一个最左原则。必须按照从做匹配,联合索引必须注意