索引是什么?为什么数据库优化会用到?

先说结论,索引(Index)是帮助数据库高效获取数据的数据结构。

简单地说,在sql查询中用索引能不查全文,还能让查到的内容更精确,所以查询能更快。

结构主要分为两类:B-TreeLMS-Tree(Hash)

B-Tree结构

最顶层存的内容范围和引用,通过引用往下找,最底层存值,最多五层结构,每层的数量不一定,值越多,每层数量越多。这样做能加快查询,但是每个结构存储的文件最小为4kb,也有可能更大,会让磁盘变得更碎片化。

优势:是查询快

劣势:磁盘东西变多了,每个单元不到4kb也会占4kb

LMS-Tree(Hash)

因为hash会分段且有序进行存储,所以只要查找值中存有段号和值即可。首先找到对应段,然后遍历段内值,找到对应值。

优点:写入较快

缺点:查询范围不够广

如果面试中如果问道sql优化一定绕不开索引,但是有那些索引?怎么用?

常见索引:主键索引、普通索引、唯一索引、复合索引

常用索引:复合索引

复合索引创建方式:

alter table 表名 add idx_a1_a2_a3 table(a1,a2,a3)

复合索引基于了第一个索引,比如建立了(a,b,c)复合索引,则不能跳过ab直接查c,因为没有(a,c)索引

最左前缀原则?

含义:从最左额索引开始匹配,遇到范围查询就会让列的索引失效(范围查询(>,<,beween,like))

例:a=1 and b=2 and c>3 and d=4     ,d的索引就会失效

那些情况会造成索引失效?

1.like查询以%开头

2.类型转换和列计算

3.条件中有or且该条件没在索引中

4.不满足最左原则

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值