数据库设置索引

本文探讨了数据库设置索引的重要性,解释了索引的概念,通过有序二叉树结构展示了索引如何加速查询,并提供了设置索引的方法。讨论了添加索引对查询速度和内存使用效率的提升,同时指出了不适合设置索引的字段类型和可能导致索引失效的SQL语句,适合高并发和大数据量场景。

目录

为什么要设置索引?

索引是什么?

1.该图中我们想要对account添加索引

2.将account单独提取出来,与该条数据对应的地址组成键值对 

3. 变成有序二叉树结构

如何设置索引:

最终效果:

关于添加索引的面试点: 


 

为什么要设置索引?

要求:在admin表中有45万条数据,现在要查询account等于"10000"的那条数据

代码:

SELECT * FROM `admin` WHERE account = "10000"

如果没有索引,该代码会遍历一遍数据库中所有数据直到找到account等于"10000"的数据为止,这样消耗的时间复杂度是O(n),如图在有45万条数据的情况下消耗的时间是0.098s

如果有一千万条数据的话,那么花费的时间会更多,如果是投入使用的产品则会显著降低用户的使用体验,除了减少查询时间外,由于设置索引后内存只需要导入较小的索引文件,提升了内存的使用效率


索引是什么?

索引是将我们想要查询的字段单独提取出来,与该条数据的地址以key-value的方式组合成一条数据,再将组合后的数据在内存中以算法排成有序二叉树,在查询时时间复杂度只有O(logn)

1.该图中我们想要对account添加索引

2.将account单独提取出来,与该条数据对应的地址组成键值对 

 

3. 变成有序二叉树结构

加入索引后,存储数据的数据结构就变成了有序二叉树结构,这样查询数据时,按照树的结构来查询,查询的时间复杂度只有O(logn)

存储方式:数据+地址

如何设置索引:

进入表设计页面,点击索引,设计account成索引,索引方法设置成树

最终效果:

加了索引后再对account进行条件查询 ,这时只花费了0.015s,提升了6倍的速度

关于添加索引的面试点: 

Q:什么样的字段不能设置成索引?

A:唯一性不高不能代表一条数据的,如性别字段,总共只有男女两种选项设置成索引也没有用

Q:为什么不把所有能设置成索引的字段都设置成索引?

A:索引 也要占用物理空间,如果设置过多索引的话反而是降低了使用效率

Q:哪些SQL语句会破坏索引某些查询条件没办法使用到索引

A:大范围查询,因为索引是精准查询,所以在查询条件是一个很大的范围时不能使用

如:查询所有学号不是101和102的学生

select * from student where stu_num not in(101,102)

 

Q:索引适合应用在什么场合?

A:在具有很多数据和很高的并发量的时候

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值