目前大部分数据库系统及文件系统都采用B-Tree或其变种B+Tree作为索引结构(更少的磁盘I/O操作次数的渐进复杂度)
一般来说,索引本身也很大,不可能全部存储在内存中,因此索引往往以索引文件的形式存储的磁盘上。这样的话,索引查找过程中就要产生磁盘I/O消耗,相对于内存存取,I/O存取的消耗要高几个数量级,所以评价一个数据结构作为索引的优劣最重要的指标就是在查找过程中磁盘I/O操作次数的渐进复杂度。换句话说,索引的结构组织要尽量减少查找过程中磁盘I/O的存取次数。
MyISAM的索引实现
数据库不同的搜索引擎辅助索引的实现原理不一样,MyISAM是索引和文件分离的
一般以主键为索引的叫做主索引,而以其他键为索引的叫做辅助索引;
直接上MyISAM的实现原理,利用B+树实现,
由上图可以看出,col1是主键,而叶子结点存储的数据是一个地址,通过地址找到数据;
下面是Col2列的辅助索引(和主索引不同的是辅助索引的key是可以重复的)
同样也是一颗B+Tree,data域保存数据记录的地址。因此