数据库的索引

索引列数量:

单列索引和组合索引

组合索引有最左原则:关于最左原则有太多话要说了,网上大部分的说法都很旧,5.7之后的有了索引下推,导致很多情况下索引都会生效。

创建组合索引  index(a,b,c)


where a=3    只使⽤了a


where a=3 and b=5    使⽤了a,b


where a=3 and b=5 and c=4    使⽤了a,b,c

 


where a=3 and c=5 and b=4    使⽤了a,b,c (可能是sql执行时自动优化,把B和C条件位置对调了)


where a=3 and c=4    使⽤了a  和索引下推


where a=3 and b>10 and c=7  使⽤了a 和  索引下推


where a=3 and b like 'xx%' and c=7    使⽤了a  和索引下推

 

 

where a=3  or a=3   只使⽤了a (sql执行会自动优化成一个条件)

 

where a=3 or a=4    索引下推

 

数据库索引类型:

主键索引:唯一 非空  有即为聚簇索引

普通索引:

唯一索引:可空

空间索引:GIS空间数据,通过R树来实现,使得空间搜索变得高效

全文索引(fulltext index):

聚簇索引和非聚簇索引

聚簇索引

也就聚集索引,

一般情况下是主键索引

如果没有主键索引,mysql会找到第一个唯一索引作为聚簇索引

如果上述两个都没有, InnoDB 会在包含行 ID 值的合成列上生成一个名为 GEN _ CL UST _ INDEX 的隐藏聚集索引。行由 InnoDB 分配给这样一个表中的行的 ID 排序。行 ID 是一个 6 字节的字段,随着新行的插入,它会单调增加。因此,由行 ID 排序的行实际上是按插入顺序排列的。

非聚簇索引

除聚簇索引之外的索引都是非聚簇索引。

数据结构

B-tree索引   聚簇索引

R-tree索引   空间索引

hash索引  准确来说只是用到了hash算法的索引,例如表A有主键列id  select id from A where A=2;用到的就是hash算法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值