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

MySQL入门学习-索引.创建索引

       索引是 MySQL 中用于加速查询的一种数据结构。它通过在表的列上创建索引来加快数据的检索速度。

一、索引的概念

       索引类似于书的目录,可以快速定位到表中的数据。当在表中的列上创建索引后,MySQL 会根据索引列的值对数据进行排序,并建立一个索引树,使得查询可以更快地找到匹配的记录。

二、索引的类型

1. 唯一索引(Unique Index):

确保索引列中的值是唯一的。

2. 主键索引(Primary Key Index):

唯一标识表中的每一行记录,并且不允许为空值。

3. 普通索引(Normal Index):

允许索引列中的值有重复。

4. 全文索引(Fulltext Index):

用于对文本类型的列进行全文搜索。

三、索引的特点

1. 加快数据检索速度。

2. 唯一索引可以保证数据的唯一性。

3. 索引会增加插入、更新和删除操作的时间成本,因为这些操作需要同时维护索引。

4. 索引会占用一定的存储空间。

四、索引的使用方法

1. 创建索引

       可以使用 `CREATE INDEX` 语句来创建索引,例如:

CREATE INDEX index_name ON table_name (column1, column2,...);

       其中,'index_name' 是索引的名称,'table_name' 是要创建索引的表的名称,'column1, column2,...' 是要包含在索引中的列的名称。

2. 使用索引

       在查询中,MySQL 会自动使用索引来优化查询性能。例如,如果在 'customer' 表的 'customer_name' 列上创建了索引,那么在查询 'SELECT * FROM customer WHERE customer_name = 'John Doe'' 时,MySQL 会使用索引来快速找到符合条件的记录。

五、索引与其他的比较

1. 索引与全表扫描

       在没有索引的情况下,MySQL 会进行全表扫描来查找匹配的记录。全表扫描会消耗大量的时间和系统资源,尤其是当表中的数据量很大时。而索引可以大大减少数据检索的时间和系统资源消耗。

2. 索引与唯一性约束

       唯一性约束用于确保表中的列的值是唯一的。唯一性约束可以通过在列上创建唯一索引来实现。与主键索引不同的是,唯一性约束可以包含空值,而主键索引不允许空值。

六、索引的高级应用

1. 组合索引

       可以在多个列上创建组合索引,以提高查询性能。例如,如果经常根据 'customer_name' 和 'customer_city' 来查询客户信息,可以在这两个列上创建组合索引。

2. 覆盖索引

       如果查询只需要从索引中获取数据,而不需要访问表中的数据,那么这种索引称为覆盖索引。覆盖索引可以大大提高查询性能,因为它不需要读取表中的数据。

3. 索引优化

       索引优化是指通过调整索引的创建、使用等策略来提高查询性能。例如,可以通过分析查询语句的执行计划来确定是否需要创建索引、创建哪些索引等。

七、以下是一些创建索引的示例代码及说明:

1. 创建唯一索引

CREATE UNIQUE INDEX index_name ON table_name (column1);

该语句在 'table_name' 表的 'column1' 列上创建了一个唯一索引。

2. 创建普通索引

CREATE INDEX index_name ON table_name (column1, column2);

该语句在 'table_name' 表的 'column1' 和 'column2' 列上创建了一个普通索引。

3. 创建全文索引

CREATE FULLTEXT INDEX index_name ON table_name (column1);

该语句在 'table_name' 表的 'column1' 列上创建了一个全文索引。

4. 删除索引

DROP INDEX index_name ON table_name;

该语句删除了 'table_name' 表上的名为 'index_name' 的索引。

       需要注意的是,索引的使用需要根据具体的业务需求和数据特点来进行选择和优化。过度创建索引可能会导致系统性能下降,因此在使用索引时需要谨慎考虑。同时,在创建索引时,也需要注意索引的命名规范和数据类型等问题,以确保索引的有效性和

(文章为作者在学习MySQL过程中的一些个人体会总结和借鉴,如有不当、错误的地方,请各位大佬批评指正,定当努力改正,如有侵权请联系作者删帖。)

http://www.lryc.cn/news/383545.html

相关文章:

  • ChatGPT智能对话绘画系统 带完整的安装源代码包以及搭建教程
  • 巴中市红色旅游地管理系统
  • ROS2从入门到精通2-2:详解机器人3D可视化工具Rviz2与案例分析
  • 国企:2024年6月中国铁路相关招聘信息,6.27截止
  • React+TS前台项目实战(十九)-- 全局常用组件封装:带加载状态和清除等功能的Input组件实现
  • php composer 报错
  • 数据安全如何防护?迅软加密软件保护企业数据资产
  • Android 11 ,默认授予预置应用/APK 需要的权限,解决permission denied for window type 2003 问题。
  • RabbitMQ(消息队列)
  • LeetCode-数组/回溯-No40组合总和II
  • 直接调用 Java 线程的 run() 方法会发生什么?
  • 计算机毕业设计Thinkphp/Laravel学生考勤管理系统zyoqy
  • 3浏览器安全
  • 昇思25天学习打卡Day01
  • Python-爬虫 下载天涯论坛帖子
  • 创建github个人博客
  • 【五子棋game】
  • 从入门到精通:使用Python的Watchdog库监控文件系统的全面指南
  • Linux 进程管理指令
  • Java OA系统通知公告模块
  • 简约的服务器监控工具Ward
  • 新能源发电乙级资质所需办理标准
  • Elasticsearch:使用 Llamaindex 的 RAG 与 Elastic 和 Llama3
  • AcWing算法基础课笔记——高斯消元
  • 【JavaScript脚本宇宙】图形魔术:探索领先的图像处理库及其独特功能
  • Nemotron-4
  • 【神经网络】神经元的基本结构和训练过程
  • 第28课 绘制原理图——绘制导线
  • NLP 相关知识
  • Java中的设计模式:实战案例分享