数据库索引

为什么要有索引?

  • 加快数据检索速度

注意什么情况不走索引(基本上where 字段 = 的都走索引)

  • !=

  • >/<修饰符后面的所有字段

  • like
    %在前面不走索引,在后面走索引
    所以A走索引、B不走索引

    A:select * from student where 'name' like '王%'
    B:select * from student where 'name' like '%小'
    ···
  • 索引列计算(如where age + 1 = 2)

聚簇(如innodb)/非聚簇(如myisam)索引

  • 聚簇索引就是数据和索引放一起(找到索引的时候也就找到了数据),非聚簇索引则是分开存(找到索引,然后由索引找到数据)
  • 聚簇索引只有一个,默认是主键,但不代表主键就一定是聚簇索引
  • 由图可得
    • 左边(聚簇索引)的主键索引是在节点上直接存放数据(辅助键索引即非主键,则存放指向主键,然后主键则参考主键索引
    • 右边(非聚簇索引)的主键索引辅助键索引则是索引和数据分开放,节点统一放索引,去指向统一存放数据的地方
      图片说明
  • 所以!Innodb用的是b+树,底层就是实现了聚簇索引(将数据放到叶子结点,b+树的特性就是所有数据都是在叶子结点,所以……自行脑补)

https://www.cnblogs.com/wwxzdl/p/11116446.html
https://www.cnblogs.com/ExMan/p/10385554.html
https://www.cnblogs.com/wenxiaofei/p/9853682.html
本地的《聚簇索引和非聚簇索引.docx》

全部评论

相关推荐

2025-12-28 16:32
重庆邮电大学 Java
程序员花海:1.技能放最后,来面试默认你都会,技能没啥用 2.实习写的看起来没啥含金量,多读读部门文档,包装下 接LLM这个没含金量 也不要用重构这种 不会给实习生做的 3.抽奖这个还是Demo项目,实际在公司里面要考虑策略,满减,触发点,触发规则 库存 之类的,不是这个项目这么简单 4.教育背景提前,格式为 教育背景 实习 项目 技能 自我评价
简历被挂麻了,求建议
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务