先说说我对mysql索引的理解:
表A
:
name sex age
cxl male 21
yueshu female 20
csy female 0
....
普通情况下,name
字段未建立索引,A
表中查找 name = yueshu
的记录,则查询过程如下:
// 原表中查询
name = cxl , No
name = yueshu , Yes => return
一条条按照记录的先后顺序,线性查找下去,直到符合条件的出现,则终止查询。
name
建立索引的情况下,A
表中查找 name = yueshu
的记录,则查询过程如下(参考资料
:http://blog.csdn.net/iefreer/...):
1. 由于 name 字段建立了索引,所以实际上在建立索引的同时
1.1 数据库会隐式的生成一张保存了当前索引字段和当前索引字段所在记录指针的索引表
索引表会占据额外的磁盘空间
1.2 占据的空间计算:
1.2.1 占据空间 = 磁盘块数量 * 默认的磁盘块大小
1.2.1.1 磁盘块数量 = 记录数 / 每磁盘块存放的记录数
1.2.1.1.1 每磁盘块存放的记录数 = 默认的磁盘块大小 / 每条记录占据的磁盘大小
2. 查找数据的时候是在这张索引表中去查找的,并不会在原表中进行查找
2.1 mysql查询过程
2.1 mysql 查询是在磁盘块上进行线性查找
2.2 查找效率对比
2.2.1 索引表中的磁盘块数量 远小于 原表中的磁盘块数量,所以在建立了索引的字段上进行查找
能够在更小的范围内查找出想要的结果,因而,效率,非常高
请结合 参考资料
上的描述,先纠正下我对索引的理解,然后在给出正确的解释...谢谢
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…