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)等情况,可能会导致索引失效。
相关推荐
王木风7 小时前
1分钟理解什么是MySQL的Buffer Pool和LRU 算法?
前端·mysql
CryptoPP7 小时前
获取越南股票市场列表(包含VN30成分股)实战指南
大数据·服务器·数据库·区块链
阿巴~阿巴~8 小时前
Redis重大版本演进全解析:从2.6到7.0
服务器·数据库·redis·ubuntu·缓存·centos
qq_404643349 小时前
MySQL中RUNCATE、DELETE、DROP 的基本介绍
数据库·mysql
像风一样!10 小时前
MySQL数据库如何实现主从复制
数据库·mysql
大白的编程日记.10 小时前
【MySQL】数据库表的CURD(二)
android·数据库·mysql
友善的鸡蛋10 小时前
项目中执行SQL报错oracle.jdbc.OracleDatabaseException: ORA-00942: 表或视图不存在
数据库·sql·oracle
The best are water10 小时前
jeesite mybatis添加拦截器,推送指定表的变更数据到其他数据库
数据库·mybatis
api_1800790546010 小时前
异步数据采集实践:用 Python/Node.js 构建高并发淘宝商品 API 调用引擎
大数据·开发语言·数据库·数据挖掘·node.js
怕什么真理无穷11 小时前
mysql server 9.4 windows安装教程(sqlyog 下载)
数据库