mysql的索引

索引是提升数据库查询效率的关键,它通过数据结构如B-tree减少扫描量。常见类型包括主键、唯一和普通索引。然而,不当使用如模糊查询或OR条件可能导致索引失效。创建和删除索引需谨慎,以平衡查询速度与存储成本。
摘要由CSDN通过智能技术生成

1、索引

1.1概念

索引是一种数据结构,用于加快数据库中数据的检索速度。它类似于书籍的目录。

在数据库中,索引通常基于一个或多个列的值创建,并与数据表相关联。它们可以提供快速的数据查找和筛选功能,减少了查询时需要扫描的数据量,从而提高查询效率。

1.2原理

索引实现的原理就是缩小扫描的范围,避免全表扫描

例子:

在这里插入图片描述

1.3什么情况考虑加索引

1.数据量庞大

2.字段经常出现在where后面,以条件的形式存在,总是被扫描

3.该字段很少的delete insert update操作

1.4索引的类型

1.主键类型,会自动创建索引

2.唯一类型,添加unique约束,有创建唯一索引,值必须唯一

3.普通索引,普通字段添加索引就是普通索引

1.5索引存在的意义

提高查询的效率

1.6使用索引

1.6.1创建索引

正常索引:

它会按照键值的顺序构建一个树状结构,每个节点都包含多个键值,并根据键值进行排序。

create index 自定义索引名 on 表的名(要创建索引对应的字段);

例如 :

CREATE INDEX idx_employee_id ON employees (employee_id);

唯一索引:

唯一索引要求索引列的值是唯一的,可以防止重复的数据插入。

create unique index 自定义索引名 on 表的名(要创建索引对应的字段);

例如:

CREATE UNIQUE INDEX idx_employee_id ON employees (employee_id);

主键索引:

主键索引是一种特殊的唯一索引,它要求索引列的值是唯一的,并且不能为空。

它的创建在创建表的时候通过”PRIMARY KEY"关键字创建索引。

1.6.2删除索引

drop index 删除的索引名 on 要删除索引所在的表名;

当添加索引,数据库会根据b-tree(平衡二叉树)的数据结构去组织和管理索引,使得查找到节点的位置更快,不再需要全表扫描。

索引并非适用于所有情况,没必要的索引会导致额外的内存消耗,导致性能下降,因此应该根据具体情况使用索引。

1.7索引失效

1.模糊查询开头使用了%

select * from students where stu_name like ‘%红’;

即使stu_name 添加了索引数据库也不会使用索引,因为模糊查询开头使用了%。

解决:避免模糊查询使以%开头。

2.列表查询中使用了 OR 条件

当使用 OR 连接多个条件时,如果其中至少一个条件不是索引列,那么索引可能会失效,因为无法通过索引直接匹配。

3.小数据范围的查询

对于少量数据的查询,数据库可能认为全表扫描更高效,而不使用索引。

一个条件不是索引列,那么索引可能会失效,因为无法通过索引直接匹配。

3.小数据范围的查询

对于少量数据的查询,数据库可能认为全表扫描更高效,而不使用索引。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

走路奇怪的小红

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

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

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

打赏作者

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

抵扣说明:

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

余额充值