索引的目的是什么?
答:数据库添加索引的目的是为了加快查询速度。
索引的的数据结构是什么?
答:(这里的B是balance)B+树来存储索引,B+树类似于二叉树。
B+树是怎么查找数据的?
答:B+树索引并不能找到一个给定值的具体行。B+树索引能找到的只是被查询数据行所在的页。然后数据库通过页读入到内存,再在内存中进行查找,最后得到要查找的数据。
什么是B+树
答:B+树是为磁盘或其他直接存取辅助设备设计的一种平衡查找树。在B+树中,所以记录点都按照值的大小顺序存放在同一层的叶子节点上,由各叶子节点指针进行链接。
聚集索引的定义(每张表只能有一个聚集索引)
答:聚集索引就是按照每张表的主键构造一颗B+树,同时叶子节点中存放的即为整张表的行记录,也将聚集索引的叶子节点称为数据页。聚集索引的这个特性决定了索引组织表中数据也是索引的一部分(因为存储是按照KEY-VALUE这样存储)。每个数据页都通过双向链表进行链接。
聚簇索引和非聚簇索引
答:将数据存储与索引放到了一块,找到索引也就找到了数据。将数据存储于索引分开结构,索引结构的叶子节点指向了数据的对应行,myisam通过key_buffer把索引先缓存到内存中,当需要访问数据时(通过索引访问数据),在内存中直接搜索索引,然后通过索引找到磁盘相应数据,这也就是为什么索引不在key buffer命中时,速度慢的原因
辅助索引(非聚集索引)
答:辅助索引,叶子节点并不包含行记录的全部数据
联合索引
答:就是对表中的多个字段添加索引。联合索引也是一颗B+树,只不过联合索引的叶子节点存储的字段是大于等于2。联合索引的第二个好处是已经对第二个键值进行了排序处理。
覆盖索引
答:辅助索引中就可以得到查询的记录,而不需要查询聚集索引的记录(意思就是不用回表了)。覆盖索引是联合索引的最优情况。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。