1.为什么要有索引?
假设有一张表,表中有100万条数据,这100万条数据是在硬盘上是存储在数据页上的,一页数据大小为16k,一页数据为16k,存储100万条数据需要很多数据页,假设其中有一条数据是 id=‘7900’,如果要查询这条数据,其SQL是SELECT * FROM 表名称WHERE id=7900。mysql需要扫描全表来查找id=7900的记录。全表扫描就是开始从“数据页1”开始,向后逐页查询。对于少量查询,查询速度会很快,但是,随着数据量的增加,性能会急剧下降。100万条数据逐页查询的时间是无法被用户接受的。
2.什么是索引?
索引是帮助MySQL高效获取数据的数据结构。
排好序的快速查找的数据结构。
数据库在存储数据本身之外,还维护这一个满足特定查找算法的数据结构,这些数据结构以某种方式指向数据,这样就可以在这些数据结构的基础上实现高级查找算法,这种数据结构就是索引。
左边是数据表,一共有两列七条记录,最左边的是数据记录的物理地址。
为了加快Col2的查找,可以维护一个右边所示的二叉查找树,每个节点分别包含索引键值和一个指向对应数据记录物理地址的指针,这样就可以运用二叉查找在一定复杂度内获取相应的数据,从而快速的检索出符合条件的记录。
3.索引原理
索引的目的是在于提高查询率,与我们查阅图书所用的目录是一个道理:先定位到章&#