索引是什么?
数据库中查找操作非常普遍,索引就是提升查找速度的一种手段。
索引分类
B+树索引
它就是传统意义上的索引,它是最常用、最有效的索引。哈希索引
哈希索引是一种自适应的索引,数据库会根据表的使用情况自动生成哈希索引,我们人为是没办法干预的。全文索引
用于实现关键词搜索。但它只能根据空格分词,因此不支持中文。
若要实现搜索功能,可选择lucene。RTree索引
在mysql很少使用,仅支持geometry数据类型;相对于BTREE,RTREE的优势在于范围查找。
B+树索引
数据库以页为存储单元,一个页是8K(8192Byte),一页可以存放N条记录。
页在B+树中分为:数据页和索引页。
B+树的高一般为2-4层,因此查找某一键值的行记录只需2-4次IO,效率较高。
聚集索引 和 非聚集索引
不管是聚集索引还是非聚集索引,它们的逻辑结构都一棵是B+树,它们的唯一区别在于:
- 聚集索引的数据页存放的是完整的记录;也就是说,聚集索引决定了表的物理存储顺序;
- 非聚集索引的数据页只存指向记录的地址信息,它真正的数据已经在聚集索引