MySqL-day4_03(索引)

索引-index


一、创建索引

sql 复制代码
create index 索引名称 on 表名(字段名称(长度));
  • 如果指定字段是字符串,需要指定长度,建议长度与定义字段时的长度一致。
  • 字段类型如果不是字符串,可以不填写长度部分。

例 1:为表 students 的 age 字段创建索引,名为 age_index。

sql 复制代码
create index age_index on students (age);

例 2:为表 students 的 name 字段创建索引,名为 name_index。

sql 复制代码
create index name_index on students (name(10));

▲ 索引的调用

索引的调用是数据库自动完成的,不需要我们在 SQL 语句中显式专门的指令来 "调用" 索引。

当你执行查询语句 时,数据库的查询优化器会自动判断是否可以使用已有的索引来加速查询,并选择最合适的索引执行。

(这里会自动调用 age_index)


二、查看索引

sql 复制代码
show index from 表名;

例 1:查看 students 表的所有索引

sql 复制代码
show index from students;

这条命令会返回一个详细的列表,其中几个关键列的含义是:

  • Key_name: 索引的名称。
  • Column_name: 被索引的列名。
  • Non_unique: 1 表示非唯一索引(允许重复值),0 表示唯一索引(不允许重复值)。
  • Key_len: 索引使用的字节数。
  • Index_type: 索引的类型,如 BTREE (最常见)。

三、删除索引

sql 复制代码
DROP INDEX 索引名称 ON 表名;

例 1:删除 students 表的索引 age_index

sql 复制代码
DROP INDEX age_index ON students;

四、索引优缺点

优点 ✅

  • 极大提升查询速度:这是最主要的优点。当你查询 WHERE age = 20 时,数据库可以直接去 "目录"(索引)里找,而不用一本本翻书(全表扫描)。
  • 加速关联查询(JOIN):当两张表通过某个字段关联时,在关联字段上建立索引可以显著提高连接效率。
  • 保证数据唯一性:通过创建 唯一索引(UNIQUE INDEX),可以强制要求某列的值不重复,这是实现数据完整性的一种方式。
  • 优化排序和分组:如果 ORDER BY 或 GROUP BY 的字段上有索引,数据库通常可以直接利用索引的有序性来完成操作,避免了额外的排序开销。

缺点 ❌

  • 减慢写入速度:每次执行 INSERT, UPDATE, DELETE 操作时,数据库不仅要修改数据,还要同步更新相关的索引文件,这会带来额外的开销。
  • 占用磁盘空间:索引本身也是一种数据结构,需要占用额外的存储空间。一张表上的索引越多,占用的空间就越大。
  • 并非万能:不是所有查询都能用到索引。例如,对索引列使用函数、进行模糊查询(如 %keyword)等情况,可能会导致索引失效。
相关推荐
草莓熊Lotso19 小时前
Linux IPC 进阶:System V 消息队列与信号量(含内核管理深度解析)
linux·运维·服务器·数据库·c++·人工智能·mysql
星马梦缘1 天前
数据库作战记录1
数据库·sql·mysql
短剑重铸之日1 天前
《ShardingSphere解读》07 读写分离:如何集成分库分表+数据库主从架构?
java·数据库·后端·架构·shardingsphere·分库分表
njidf1 天前
用Python制作一个文字冒险游戏
jvm·数据库·python
鸡蛋灌Bean1 天前
MySQL优化系列
数据库·mysql
数巨小码人1 天前
平滑迁移:传统到国产数据库的2026转型之路
数据库
麦聪聊数据1 天前
QuickAPI 在系统数据 API 化中的架构选型与集成
数据库·sql·低代码·微服务·架构
2403_835568471 天前
自然语言处理(NLP)入门:使用NLTK和Spacy
jvm·数据库·python
wal13145201 天前
Dify发布V1.13.1版本,Hologres 向量数据库支持、HITL 邮件 Markdown 渲染及多项安全加固
数据库·安全·dify
Leon-Ning Liu1 天前
Oracle UNDO表空间文件误删除故障恢复
数据库·oracle