[SQL] 索引是什么 (学习总结)

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.只针对频繁被查询的字段建立索引

5.通过 explain 命令判断我们是否能命中索引

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值