首先明确几个观点
1mysql 是红黑树,具体是什么暂时不去考虑,可以将其当做链表看(只是为了解释索引,真是情况不可以这样当)
2mysql 数据分块存储。
可以这样举例
mysql 表的结构如下
{
id
username
}
实际的存储方式是这样的
(1,a)(2,b) (3,a) (4,d) (5,e)
当前我们要查询id=5的数据 在没有索引的情况下 要进行5次比较最终得到结果数据
现在为id 添加索引,添加索引会引入另一张表
(1,point->((1,a)))........
表里存储的内容是被作为主键的字段值,以及指向真实数据的指针,在插入的时候就会是顺序插入 再用id进行查找的时候就会去查找这张索引表,
这张索引表有序,就可以使用二分查找进行这样的话查找就变为了log时间的 logn 和n的效率差距在数据越大的时候会越明显