1.索引
主键和唯一键都是索引,我们一般只探讨普通索引(index)
2.索引的作用
用来提高查询速度
如果有了两张表,表结构一样,数据规模一样,数据都一样,存的内容全部都相同,但使用了索引的表会比没使用的表查询速度快很多。
假设我们有一张表 users_with_index,里面有name_a,针对 users_with_index 的 name_a 添加了索引,实际上就是为 name_a 添加了一个目录(index)
为了提升查询速度,建立了一课搜索树(可以暂时当作二叉树理解),搜索树的 key 就是 name_a
users_with_index 的数据,除了保存正常数据之外,还得多保存一棵搜索树
key 就是 name_a;value 就是对应数据在硬盘上的位置
从搜索树(索引中),根据 name_a 找到匹配的位置,然后根据位置读取在硬盘上对应的数据。这样就不用在硬盘上一个一个遍历去找数据了。
3.索引的优缺点
优点:提升查询速度(不是只要建了索引,就能提升)
缺点:1.造成空间使用增加
2.造成修改的性能会下降(增、删、改)
没有索引的时候,只需要修改原始数据就行了;有了索引,除了修改原始数据之外,还得修改索引结构。
4.什么情况下更适合使用索引:
1.数据量得有一定规模 O(log(n))远小于 O(n)才有很大的价值
2.尽量针对查询很多,修改比较少的表考虑索引
3.只针对频繁被查询的字段建立索引