9. mysql索引

一、什么是索引

  1. 排好序的快速查找的数据结构。
  2. 索引(Index) 是帮助MySQL高效获取数据的数据结构,本质是数据结构。
  3. 索引的目的在于提高查找效率。
  4. 一般来说索引本身所在内存也比较大,索引往往以索引文件的形式存储在磁盘上。
  5. 常见索引一般是BTREE(多路搜索树)结构组织的索引。

1. 一个可能的索引方式示意图

在这里插入图片描述

2. 优势

  1. 建立(书目索引)检索索引提高数据的检索效率,降低数据库的IO成本。
  2. 通过索引对数据进行排序,降低数据排序的成本,降低了cpu的消耗。

3. 劣势

  1. 索引也是要占用空间的
  2. 降低更新表的速度
  3. 需要需找最优索引,并且随着表结构的变化索引也要发生改变

二、索引分类和用法

1. mysql索引分类

	○ 单值索引,一个索引只包含单个列,一个表可以有多个单值索引
	○ 唯一索引,索引列的值必须唯一,但允许为空值
	○ 复合索引,一个索引包含多个列

2. 基本语法

创建;	CREATE [UNIQUE] INDEX 索引名 ON 表名(列名);
		ALTER 表名 ADD [UNIQUE] INDEX [索引名] ON (列名);
删除:
		DROP INDEX [索引名] ON 表名;
查看:
		SHOW INDEX FROM 表名;	

3. mysql索引结构

  1. BTree 索引
  2. Hash 索引
  3. Full-text 索引
  4. R-Tree 索引

4. 哪些情况需要创建索引

	○ 主键自动建立唯一索引
	○ 频繁作为查询条件的字段应该建立索引
	○ 查询中与其他表关联的字段,外键关系建立索引
	○ 频繁更新的字段不适合创建索引
	○ Where 条件里用不到的字段不创建索引
	○ 单值/组合索引的选择(高并发在创建组合索引)
	○ 查询中排序的字段创建索引,提高排序速度
	○ 查询中统计或者分组的字段

5. 哪些情况不需要创建索引

	○ 表记录太少 (少于300万)
	○ 经常增删改的表
	○ 数据重复且分布平均的表字段
优化MySQL索引是提高数据库查询性能的关键步骤之一。下面是一些优化MySQL索引的常用方法: 1. 分析查询和索引的执行计划:通过使用EXPLAIN语句来分析查询的执行计划,了解MySQL是如何使用索引的。可以查看是否使用了合适的索引索引是否覆盖了查询所需的列等。 2. 选择合适的数据类型:选择适当的数据类型可以减小索引的大小,提高查询效率。例如,对于字符串类型的列,可以使用最短的适当字符集和根据实际情况选择字符集和排序规则。 3. 创建合适的索引:根据查询的特点和频率,创建合适的索引。考虑到查询的选择性和覆盖度,选择合适的列作为索引,并根据查询的顺序和条件进行列顺序的选择和组合。 4. 删除不必要的索引:过多或不必要的索引会增加写操作的开销,并占用额外的存储空间。定期检查和删除不再使用或重复的索引,以减少索引维护的负担。 5. 使用覆盖索引:在查询中使用覆盖索引,即索引中包含了查询所需的所有列,避免了回表操作,可以提高查询性能。 6. 避免索引列上的函数操作:对索引列使用函数操作会导致无法使用索引,应尽量避免在索引列上进行函数操作。 7. 更新统计信息:MySQL会根据统计信息来优化查询计划。因此,定期更新索引的统计信息可以帮助MySQL选择更优的查询计划。 8. 注意索引和表的大小:索引和表的大小对查询性能有影响。较大的索引可能导致更多的磁盘I/O,而较大的表可能会增加查询的开销。可以考虑对较大的表进行分区或分表,以减少查询的范围和开销。 以上是一些常见的MySQL索引优化方法,根据具体的应用场景和需求,还可以进行更加细致的索引设计和性能调优。在实际使用中,可以结合实际情况进行测试和调整,以获得最佳的查询性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CAFEBABE 34

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值