数据库索引的创建和使用

数据库索引
数据库的索引 可以加快查询速度,原因是索引使用特定的数据结构(B-Tree)对特定的列额外组织存放,加快存储引擎(索引是存储引擎实现)查找记录的速度。
索引优化是数据库优化的最重要手段。

如果查询语句使用索引(通常是where条件匹配索引)就会利用树的结构加快查找,索引会按值查找到要查找的行在表中位置,不需回表查询数据的就是聚簇索引(索引和数据存放在一起)。通常是需要回表再查数据,需要消耗额外的磁盘IO。所以有些时候(如按顺序读取数据)全表扫描会比使用索引快的原因就在于此。

创建索引

1,普通索引的创建:

create index 索引名 on 表名(字段名(索引长度));

索引长度可以使用列的一部分创建索引,可以使索引文件大大减小,从而节省了大量的磁盘空间,有可能提高INSERT操作的速度。

例如:创建班级表中,name字段的索引

create index idx_classes_name on classes(name);

创建表的时候直接指定:

复制代码
CREATE TABLE mytable(
       ID INT NOT NULL, 
       username VARCHAR(16) NOT NULL, 
       INDEX [indexName] (username(length))
 );

2,删除索引

drop index 索引名 on 表名;

例如:删除班级表中name字段的索引

drop index idx_classes_name on classes;

3,主键索引

就是表中创建主键,默认的唯一的不为空的索引

4,唯一索引

索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一,

就是创建的字段是UNIQUE的not null的字段,就是唯一索引

CREATE UNIQUE INDEX 索引名称 ON 表名称 (列名称)

"列名称" 规定你需要索引的列。

5,多列索引

ALTER TABLE 表名 ADD INDEX 索引名(字段1,字段2,字段3);

注意在mysql中执行查询时,只能使用一个索引,如果我们在字段1,字段2,字段3上分别建索引,执行查询时,只能使用一个索引,mysql会选择一个最严格(获得结果集记录数最少)的索引。

索引的查询

show index from 表名;

查看该表中已经有的索引。

使用场景

要考虑对数据库表的某列或某几列创建索引,需要考虑以下几点:

1,数据量较大,且经常对这些列进行条件查询。

2,该数据库表的插入操作,及对这些列的修改操作频率较低。

3,索引会占用额外的磁盘空间。

满足以上条件时,考虑对表中的这些字段创建索引,以提高查询效率。

反之,如果非条件查询列,或经常做插入、修改操作,或磁盘空间不足时,不考虑创建索引。

相关推荐
数智化管理手记31 分钟前
主数据重复、错漏频发?一站式主数据管理平台如何落地?
大数据·运维·数据库·人工智能·数据挖掘
吴声子夜歌35 分钟前
MongoDB 4.2——选择片键
数据库·mongodb
天天进步一点点1 小时前
QSqlQuery删除sqlite数据库执行drop数据表报错database table is locked unable to fetch row问题
数据库·oracle·sqlite
音视频工程实战1 小时前
PromptQL 新手入门与实战指南
数据库·sql·算法
清川渡水2 小时前
NL2SQL 的正确打开方式:从「AI 猜 SQL」到「置信度闭环」的工程化落地
数据库·人工智能·sql
TDengine (老段)2 小时前
TDengine Go 与 Rust 连接器 — 高性能异步访问
大数据·数据库·物联网·golang·rust·时序数据库·tdengine
东方佑2 小时前
MA-RMSNorm:打破“缩放换智能”的魔咒,大模型归一化的一次范式革命!
数据库·人工智能·计算机视觉
云和恩墨3 小时前
「云帆计划·长沙站」活动成功举办,云和恩墨与紫薇垣和湖南金悦科技分别签约并授牌,本地伙伴生态建设加速
数据库·科技
千维百策6664 小时前
如何管理错误预算:提升服务可靠性与 SLO 达成率的实践经验
服务器·网络·数据库
Y3815326625 小时前
2026 年 7 月,SERP API 调用的稳定性实战:超时、重试、降级
开发语言·数据库·人工智能·php