MySQL——索引

索引基本概念

索引的定义

索引相当于目录,是添加在数据库表的字段上添加的。使用索引可以有效提高查询速率。

索引的副作用

索引需要占据额外的磁盘空间,在插入和修改数据时要花费更多的时间,因为索引也要随之变动

索引的类型

主键索引(Primary Key):加在唯一能标识一组数据的字段或字段组上(主键或主键组),不能为空,可以确定唯一数据记录在数据库表中的位置。

唯一索引 (Unique): 避免同一个表中某数据列中的值重复(只要求字段或字段组的内容唯一),不能为空,但是可以有多个唯一索引。

常规索引(Index):没有什么限制,可以重复,可以为空,主要用来加速查询。

全文索引(FullText).:快速定位特定数据,只能用在CHAR , VARCHAR , TEXT等数据列类型。在执行复杂文本的搜索时非常有用。

空间索引:MySQL在5.7之后的版本支持了空间索引,字段必须不为空,主要用于GIS(地理信息系统)和测绘,可以快速查找特定区域的所有对象或与一个对象相邻的对象。

组合索引:一个或多个字段的索引,这些字段的组合必须是唯一的,遵循最左原则,可以提高在多字段查询的效率。

创建索引

直接创建索引(create index)

注意!主键索引无法使用此方式 进行创建

CREATE INDEX 索引名 ON 表名 (列名[(length)]);

例:create index name_index on SC(name);

修改表结构方式添加索引(alter update)

ALTER TABLE 表名 ADD INDEX 索引名 (列名);

例: alter table SC add index id_index (id);

创建表结构时创建索引(create table)

CREATE TABLE 表名 ( 字段1 数据类型,字段2 数据类型[,...],INDEX 索引名 (列名))

例: create table SC( id int(10), name varchar(20), index id_index (id));

注意事项

创建索引应当满足最左前缀原则。

最左前缀原则:

最左优先,以最左边的为起点任何连续的索引都能匹配上。

(1)如果第一个字段是范围查询需要单独建一个索引;

(2)在创建多列索引时,要根据业务需求,where子句中使用最频繁的一列放在最左边;

当创建(a,b,c)复合索引时,想要索引生效的话,只能使用 a和ab、ac和abc三种组合!

查看索引

查询语句

show index from 表名;

show index from 表名\G

show keys from 表名;

show keys from 表名\G

关键字解析

|--------------|-----------------------------------------------|
| Non_unique | 如果索引不能包括重复词,则为 0;反之为1 |
| Key_name | 索引的名称 |
| Seq_in_index | 索引中的列序号,从 1 开始 |
| Column_name | 列名 |
| Collation | 列以什么方式存储在索引中。在MySQL中,有值'A'(升序)或 NULL(无分类) |
| Cardinality | 索引中唯一值数目的估计值 |
| Sub_part | 如果列只是被部分地编入索引,则为被编入索引的字符的数目。如果整列被编入索引,则 NULL。 |
| Packed | 关键字如何被压缩。如果没有被压缩,则为 NULL。 |
| Null | 如果列有空值,为YES。如果没有,则为NO |
| Index_type | 用过的索引方法(BTREE, FULLTEXT, HASH, RTREE) |
| Comment | 备注 |

相关推荐
krielwus1 小时前
Oracle OMF 配置文档
数据库·oracle
江湖人称小鱼哥2 小时前
Prisma 命令安全指南
数据库·安全·prisma
Gauss松鼠会2 小时前
【openGauss】1分钟掌握:openGauss活动会话CPU占用率获取
数据库·database·opengauss
豆沙沙包?2 小时前
2025年--Lc182--sql(排序和分组)--Java版
java·数据库·sql
CryptoRzz3 小时前
欧美(美股、加拿大股票、墨西哥股票)股票数据接口文档
java·服务器·开发语言·数据库·区块链
APItesterCris3 小时前
构建弹性数据管道:利用淘宝商品 API 进行流式数据采集与处理
linux·数据库·windows
九河云3 小时前
TOS + 数字孪生:集装箱码头的智能进化密码
大数据·服务器·网络·数据库·数字化转型
手握风云-4 小时前
MySQL数据库精研之旅第十九期:存储过程,数据处理的全能工具箱(二)
数据库·mysql
孟意昶4 小时前
Doris专题17- 数据导入-文件格式
大数据·数据库·分布式·sql·doris
你可以永远相信功夫熊猫4 小时前
金蝶云·星瀚 | 生产制造成本核算终极实操手册(从0到1,含两套完整案例)
数据库·erp