Mysql-索引

  1. 主键索引:表的主键为 B+Tree 的 key。
  2. 二级索引:二级索引的 value 是表的主键,这样做的好处是 B+Tree 的节点小,可以一次放入更多节点到内存,减少 IO 次数。缺点是需要回表:通过二级索引查到的主键,再去主键索引查需要的信息。
  3. 聚簇索引:索引结构和数据一起存放的索引InnoDB 中的主键索引就属于聚簇索引。优点:不需要回表。
  4. 非聚簇索引:索引结构和数据分开存放的索引
  5. 覆盖索引:在二级索引就可以查询到用户所要的数据的索引,不需要回表
  6. 联合索引:使用表中多个字段建立的索引。

最左匹配原则

联合索引中按照左边优先的顺序进行匹配,直到遇到第一个范围查询,其后边的 key 不再使用联合索引。因为优先级较高的 key 相等的情况下,优先级低的 key 才是局部有序的,当优先级较高的 key 是范围查询(>或<),优先级低的 key 是无序的,不能使用 B+Tree 查询。需要注意的是当高优先级 key 为前缀查询:">="、"<="、"bettwen and" 和 "like" 时,并不会停止匹配,低优先级的key 会用到联合索引,因为这三个范围查询都包含了高优先级的等值查询,在这个等值查询里,低优先级的 key 是有序的

note:测试了高优先级用 "in" 查询也不会导致后边的key 停止匹配。

索引失效

  • 左模糊匹配 like %xx
  • 对索引列做了计算
  • 正确的最左匹配原则
  • 在 WHERE 子句中,如果在 OR 前的条件列是索引列,而在 OR 后的条件列不是索引列,那么索引会失效。
posted @   hellozhangjz  阅读(10)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
历史上的今天:
2023-03-08 C++自定义比较函数的bug
2022-03-08 C++ bind函数
2020-03-08 C++ 命令行窗口打印二叉树(图形)
2020-03-08 C++ const与指针
点击右上角即可分享
微信分享提示