当前位置: 首页 > news >正文

MySQL数据库-索引的介绍和使用

目录

    • MySQL数据库-索引
      • 1.索引介绍
      • 2.索引分类
      • 3.创建索引
        • 3.1 唯一索引
        • 3.2 普通索引
        • 3.3 组合索引
        • 3.4 全文索引
      • 4.索引使用
      • 5.查看索引
      • 6.删除索引
      • 7.索引总结
        • 7.1 优点
        • 7.2 缺点
        • 7.3 索引使用注意事项

MySQL数据库-索引

数据库是用来存储数据,在互联网应用中,数据库存储的数据可能会很多(大数据),数据表中数据的查询速度会随着数据量的增长而逐渐变慢,从而导致相应用户请求的速度变慢,造成用户体验差。为了提高数据的查询效率,我们需要在数据库中用到索引。

数据准备

-- 创建数据表(准备存储500万数据)
CREATE TABLE tb_testindex(fid INT PRIMARY KEY,	-- 主键sid INT UNIQUE,			-- 唯一键tid	int,				-- 普通字段name VARCHAR(20),remark VARCHAR(20)
);
-- 数据准备:创建存储过程,向tb_testindex表插入500万条数据
CREATE PROCEDURE proc_readydata()
BEGINDECLARE i INT DEFAULT 1;WHILE i < 5000000 DOINSERT INTO tb_testindex(fid,sid,tid,name,remark) VALUES(i,i,i,'test_name','test_remark');SET i = i+1;END WHILE;
END;
-- 调用存储过程,准备五百万条数据
CALL proc_readydata();
-- 查询数据
SELECT COUNT(1) FROM tb_testindex;

1.索引介绍

索引:用来提高数据表中数据的查询效率。

索引,就是将数据表中的某一列/某几列的值取出来,构造成便于查找的结构进行存储,生成数据表的目录,当进行数据查找的时候,则先在目录中进行查找,得到对应数据的地址,然后再根据地址到数据表中快速的获取数据记录,避免全表扫描。

2.索引分类

MySQL索引,根据创建的列不同,可以分为:

  • 主键索引:在数据表的主键上创建的索引,这个字段必须被primary key修饰,每张表只能有一个主键
  • 唯一索引:在数据表的唯一键上创建的索引,必须被unique修饰,此列的所有值只能出现一次,可以为NULL
  • 普通索引:在普通字段上创建的索引,没有唯一性限制
  • 组合索引:两个及以上的字段联合起来创建的索引

说明:

  1. 在创建数据表时,将字段声明为主键,会自动在主键字段上创建索引–主键索引
  2. 在创建数据表时,将字段声明为唯一键,会自动创建主键–唯一索引

3.创建索引

3.1 唯一索引
-- 创建唯一索引:创建唯一索引的列可以为空,但不能重复
CREATE UNIQUE INDEX index_tid ON tb_textindex(tid);
3.2 普通索引
-- 创建普通索引:不要求创建索引的列必须不能重复
CREATE INDEX index_tid ON tb_textindex(name);
3.3 组合索引
-- 创建组合索引:在多个字段上创建索引
CREATE INDEX index_tid ON tb_textindex(tid,name);
3.4 全文索引

全文索引,是MySQL5.6版本以后新增的索引:通过此索引,可以进行全文检索操作,因为Mysql的全文检索不支持中文,因此全文索引不被开发者关注,在应用开发中,通常是通过全文搜索,搜索引擎如ES(数据库中间件)实现全文检索。

create fulltext index <index_name> on 表名(字段名);

4.索引使用

索引创建完成以后不需要调用,当根据创建索引的类进行数据查询的时候,会自动使用索引。

组合索引也需要根据创建索引的所有字段进行查询时触发。

  • 在命令行窗口中,可以查询语句的查询规划:
explain select * from tb_testindex where tid = 250000\G;

5.查看索引

-- 命令行
SHOW CREATE TABLE tb_testindex;
-- 查询索引
show index from tb_testindex;
-- 查询索引
show keys from tb_testindex;

6.删除索引

-- 删除索引
-- 索引是建立在字段上的,不同表中可能出现相同名称的索引,所以删除索引时需要指定表名
drop index index_tid on tb_testindex;

7.索引总结

7.1 优点
  • 索引提高查询效率
  • 索引可以避免服务器排序,将随机的IO变成顺序IO
7.2 缺点
  • 索引是根据数据表列的值创建,当数据表中数据发生DML操作时,会重新生成索引文件
  • 索引文件也会占用磁盘空间
7.3 索引使用注意事项
  • 如果数据表中数据不多时,不建议使用索引,全表扫描可能会更快
  • 数据量大,但是DML操作频繁,不建议使用索引
  • 不要在数据重复度高的列上创建索引(性别)
  • 创建索引之后,要注意查询SQL语句的编写,避免索引失效
http://www.lryc.cn/news/489788.html

相关文章:

  • 【图像去噪】论文精读:Pre-Trained Image Processing Transformer(IPT)
  • Java SE 与 Java EE:基础与进阶的探索之旅
  • ssm旅游推荐系统的设计与开发
  • 【人工智能】用Python和NLP工具构建文本摘要模型:使用NLTK和spaCy进行自然语言处理
  • 51c大模型~合集76
  • 资源控制器--laravel进阶篇
  • 对象:是什么,使用,遍历对象,内置对象
  • 设计模式:4、命令模式(双重委托)
  • DataWorks快速入门
  • EasyExcel并行导出多个excel文件并压缩下载
  • 圣诞节秘诀
  • 亚信安全发布《2024年第三季度网络安全威胁报告》
  • Long noncoding RNAs and humandisease
  • 嵌入式AI之rknn yolov5初探
  • 《Vue零基础入门教程》第三课:起步案例
  • 深入浅出C#编程语言
  • 游戏盾 :在线游戏的终极防护屏障
  • 工作中的问题记录笔记
  • 加载指定会话最近消息
  • 基于tensorflow使用VGG16实现猫狗识别
  • 第18章 EXISTS 与 NOT EXISTS 关键字
  • Windows多JDK版本管理工具JVMs
  • 【C++】初始化列表、类型转换
  • 创新设计,精准仿真|SOLIDWORKS Simulation 2025新功能
  • vue3封装Element Plus table表格组件
  • Qt之QWidget相关
  • 用web前端写出一个高校官网
  • 【笔记】Android Gradle Plugin配置文件相关说明-libs.versions.toml
  • 如何修复WordPress卡在维护模式
  • glob三个函数的效果