mysql的索引

本文详细介绍了MySQL中索引的概念,包括B+Tree结构、聚集索引与非聚集索引的区别,以及它们如何影响查询优化。通过实例,帮助读者理解不同类型的索引如何存储数据,以及如何选择合适的索引策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mysql的索引

mysql索引的数据结构

  1. B+Tree结构
    image
  • 最上层:根节点
  • 中间层:非叶子节点
  • 最下层:叶子节点
  1. B+Tree结构索引原理:
    https://www.jianshu.com/p/486a514b0ded

mysql索引分类

聚集索引(主键)

  1. 定义:聚集索引指的主键
  2. 存储:最底层的叶子节点存储的就是数据

非聚集索引(又称二级索引)

  1. 定义:非聚集索引又叫辅助索引或者二级索引,即除开主键外的索引,比如复合索引、前缀索引、唯一索引、全文索引
  2. 非聚集索引的存储:最底层的叶子节点<键值,(记录)地址>,即主键所在的地址
  3. 非聚集索引的信息(两种形式)
  • 记录的物理地址—页号:槽号:偏移量
  • 记录的主键值

聚集索引和非聚集索引的区别

  1. 区别
  • 前者(主键)的叶子节点就是数据节点
  • 后者叶子节点仍然是索引节点(存的主键所在的位置),so需要两次索引才能找到数据
  • 由于二级索引不保存完整数据,故它的树高度更小,然而索引效率低(多一次索引哦)
  • 注意:仅当主键发生改变时,才会更新二级索引
  1. 举例说明
  • 聚集索引:查字典的场景,每个字所在的位置有一个页码,如果你知道一个字的所在具体页数便可直接翻到相应的页,此刻可以把字典中的页码看成主键,该页码就是聚集索引
  • 非聚集索引(二级索引):此操作就如查字典,先找到生字的偏旁部首查找到字在哪一页(获得主键的位置),然后再翻到生字的具体章节叶

mysql索引原理以及查询优化

  1. 索引原理以及查询优化:https://www.cnblogs.com/bypp/p/7755307.html
MySQL索引是一种数据结构,可以帮助MySQL快速定位和访问表中的数据。使用索引可以提高查询效率,降低数据库的负载。下面是MySQL索引的一些基本概念和使用方法: 1. 索引类型 MySQL支持多种类型的索引,包括B索引、哈希索引、全文索引等。其中,B索引是最常用的一种,也是默认的索引类型。B索引可以用于精确匹配和范围查询,而哈希索引主要用于等值查询,全文索引则用于文本检索。 2. 索引创建 可以在创建表时指定索引,例如: ``` CREATE TABLE users ( id INT PRIMARY KEY, name VARCHAR(50), email VARCHAR(50), INDEX idx_email (email) ); ``` 也可以在已有的表上添加索引,例如: ``` ALTER TABLE users ADD INDEX idx_name (name); ``` 3. 索引使用 查询语句中可以使用WHERE子句和ORDER BY子句来利用索引,例如: ``` SELECT * FROM users WHERE email = 'example@example.com'; SELECT * FROM users WHERE name LIKE 'John%' ORDER BY id DESC; ``` 需要注意的是,索引并不是越多越好,过多的索引会占用过多的磁盘空间并降低写操作的性能。因此,需要根据实际情况选择合适的索引。同时,还需要定期对索引进行维护,包括优化查询语句、删除不必要的索引等。 4. 索引优化 MySQL提供了一些工具来优化索引,例如EXPLAIN命令可以帮助分析查询语句的执行计划,找出慢查询和不必要的全表扫描。可以使用OPTIMIZE TABLE命令来优化表的索引和碎片,从而提高查询性能。还可以使用缓存来避免频繁的查询操作,例如使用Memcached或Redis等缓存工具。 以上就是MySQL索引的一些基本概念和使用方法,需要根据实际情况进行选择和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值