索引的英文名叫 index 在数据库是一种帮助MySQL高效获取数据的数据结构 而且是一种有序的数据结构
在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据, 这样就可以在这些数据结构上实现高级找算法,这种数据结构就是索引。
其实重点 就只需要去记 索引是一种有序的数据结构 他是帮助MySQL高效获取数据的
我们来对比查询说明
首先 这里 我们有一张没有索引的表 如果我们想找年龄45的数据
那么就要执行sql
select * from users where age = 45;
那这样 按实现逻辑 数据库就会找到users 表 然后对他的数据一条一条的进行匹配 当他匹配到第七条之后 会查出一条数据 第七条是符合查询条件的 执行完之后 他还会继续去匹配第八条 第九条 直到匹配完整个表所有的数据 因为 一张表达到条件的数据不一定只有一条 这种查询 被叫做 全表扫描 效率是比较低的
在建立了索引的情况下 系统会通过二叉树数据结构 记录下每条数据的地址 通过二叉树匹配到对应的数据 会大大提高效率
当然 这里的二叉树并不是真实的索引结构 只是一张帮助理解的视图
然后是索引的优缺点
优点
1 提高搜素效率 降低数据库的IO成本
2 通过索引列对数据进行排序,降低了数据库排序成本 减少了对CPU的消耗
缺点
1 首先 索引列也是要占用空间的 会占用磁盘空间 当然 这个磁盘的问题不用太在意
2 虽然查询效率提高了 但代价就是 表的更新效率会变低 例如 你对索引表进行 增加 修改 删除数据 效率就会变低 因为他要去维护索引的结构