mysql--索引

索引作为一种数据结构,其用途是用于提升检索数据的效率。

分类

普通索引(INDEX):索引列值可重复

唯一索引(UNIQUE):索引列值必须唯一,可以为NULL

主键索引(PRIMARY KEY):索引列值必须唯一,不能为NULL,一个表只能有一个主键索引

全文索引(FULL TEXT):给每个字段创建索引

1.创建索引

1.1 普通索引(INDEX)

1.1.1 在创建表时指定

复制代码
mysql> create table student1(id int not null, name varchar(100) not null, birthdy date, sex char(1) not null, index nameindex (name(50)));
Query OK, 0 rows affected (0.02 sec)

1.1.2 基于表结构创建

复制代码
mysql> create table student2(id int not null, name varchar(100) not null, birthday date, sex char(1) not null);
Query OK, 0 rows affected (0.01 sec)

mysql> create index nameindex on student2(name(50));

1.1.3 修改表结构创建

复制代码
mysql> create table student3(id int not null, name varchar(100) not null, birthday date, sex char(1) not null);
Query OK, 0 rows affected (0.01 sec)

mysql> ALTER TABLE student3 ADD INDEX nameIndex(name(50));

1.2 唯一索引(UNIQUE)

1.2.1 在创建表时指定

复制代码
mysql> create table student4(id int not null, name varchar(100) not null, birthday date, sex char(1) not null, unique index id_idex (id));
Query OK, 0 rows affected (0.00 sec)

1.2.2 基于表结构创建

复制代码
mysql> create table student5(id int not null, name varchar(100) not null, birthday date, sex char(1) not null);
Query OK, 0 rows affected (0.00 sec)

mysql> CREATE unique INDEX idIndex ON student5(id);

2. 删除索引

2.1 普通索引(INDEX)

2.1.1 直接删除

复制代码
mysql> DROP INDEX nameIndex ON student1;

2.1.2 修改表结构删除

复制代码
mysql> ALTER TABLE student2 DROP INDEX nameIndex;

2.2 唯一索引(UNIQUE)

2.2.1 直接删除

复制代码
mysql> DROP INDEX idIndex ON student4;

2.2.2 修改表结构删除

复制代码
mysql> ALTER TABLE student DROP INDEX idIndex;

2.3 查看索引

复制代码
mysql> SHOW INDEX FROM tab_name;

3.问题:

3.1 导致SQL执行慢的原因:

1.硬件问题。如网络速度慢,内存不足,I/O吞吐量小,磁盘空间满了等。

2.没有索引或者索引失效.

3.数据过多

3.2 索引失效的原因:

运用函数

统计信息不准确:当表中的数据发生大量的插入、更新或者删除操作后,统计信息可能就不再准确

数据分布不均

或(两者都对)

数据类型不匹配

大量的模糊查询

函数的大量使用
注意点:

index(key)每张表可以有很多列做index,必须的起名

索引:当查询速度过慢可以通过建立优化查询速度,可以当作调优

相关推荐
2501_933670792 小时前
2026秋招数据分析岗备考路线:SQL、BI、项目与面试题拆解
数据库
我要见SA姐14 小时前
告别 Copilot?Codex 本地化部署指南
运维·数据库·机器学习·oracle·回归
xcLeigh5 小时前
聊聊国产化替换:好用数据迁移工具KDMS怎么帮咱们搞定评估难
数据库·sql·数据迁移·kes·kdms
Elastic 中国社区官方博客5 小时前
列式存储并不等同于列式数据库。Columnar 模式为 Elasticsearch 带来了什么
大数据·运维·数据库·elasticsearch·搜索引擎
我要见SA姐16 小时前
用 Claude Code 重构遗留系统:从评估到落地的完整实践指南
数据库·ide·vscode·oracle·编辑器
Nturmoils7 小时前
一份 KDMS 评估报告,怎样排出迁移先后顺序
数据库
这个DBA有点耶7 小时前
异构数据集成怎么做?5 种同步方案对比 + 金融级 CDC 实战解析
数据库·oracle·架构
独泪了无痕7 小时前
SQL函数实战:GREATEST与LEAST的技巧
数据库·sql·mysql
麻辣布丁7 小时前
MySQL篇面试题模拟
mysql
码少女8 小时前
Linux--多路转接之select
java·服务器·数据库