【数据库】【MySQL】索引

news/2025/2/26 0:19:06

MySQL中索引的概念

索引(MySQL中也叫做"键(key)")是一种数据结构,用于存储引擎快速定找到记录。
简单来说,它类似于书籍的目录,通过索引可以快速找到对应的数据行,而无需遍历整个表。索引建立在表的列上,通过对列中的数据进行特定的排序和存储方式,使得数据库在执行查询操作时,能够迅速定位到满足条件的数据。例如,在一个包含大量用户信息的表中,如果没有索引,当要查询某个特定用户时,可能需要逐行检查每一条记录;而有了索引,数据库可以直接根据索引找到对应的用户记录,大大提高了查询效率。索引不仅可以用于加速查询,还能在数据唯一性约束、排序操作等方面发挥重要作用 。

索引的作用

  • 加快数据检索速度:通过索引可以快速定位到符合条件的数据行,减少全表扫描的次数,从而大大提高查询效率。
  • 在牺牲少量写入性能的前提下,显著提升查询效率
  • 唯一索引和主键索引能确保表中特定列的数据唯一性,避免重复数据的插入,保证数据的完整性。

索引的优缺点

优点

  • 提高查询速度,减少查询时间,提升数据库的响应性能。
  • 可以强制数据的唯一性,维护数据的完整性和一致性。

缺点

  • 占用存储空间:索引本身需要占用一定的磁盘空间,特别是在数据量较大的情况下,索引占用的空间也会相应增加。
  • 影响写入性能:在插入、更新和删除数据时,不仅要更新数据本身,还要更新对应的索引,会增加操作的时间和资源消耗。

MySQL中主流索引类型详解

索引有很多种不同的类型,可以为不同的场景提供更好的性能。在MySQL中,索引是在存储引擎层而不是在服务器层实现的。所以并没有同一的索引标准:不同存储引擎支持的索引不完全相同,不同的存储引擎相同索引的底层实现不一样,工作方式也不同。

核心索引类型对比

索引类型存储引擎支持数据结构是否唯一支持操作典型应用场景索引示例SQL
B+Tree索引InnoDB/MyISAMB+Tree可选=, >, <, >=, <=, BETWEEN, ORDER BY, LIKE ‘prefix%’主键索引、普通索引、联合索引CREATE INDEX idx_name ON users(last_name)
哈希索引MEMORY引擎显式支持
InnoDB自适应哈希隐式使用
Hash Table可选仅精确匹配 (=, <=>)内存表(MEMORY引擎)、等值过滤CREATE TABLE mem_table (...) ENGINE=MEMORY
全文索引InnoDB(5.6+)/MyISAM倒排索引不支持MATCH() AGAINST()
支持自然语言/布尔搜索
文章内容搜索、商品描述查询ALTER TABLE articles ADD FULLTEXT(title,body)
空间索引InnoDB(5.7+)/MyISAMR-Tree不支持GIS关系运算
(ST_Contains, ST_Distance等)
GIS数据查询、地图坐标查询、地理围栏判断CREATE SPATIAL INDEX sp_idx ON lands(poly)
主键索引所有引擎B+Tree强制唯一与B+Tree相同表的主标识字段CREATE TABLE ... PRIMARY KEY(id)

关注我!下一篇,我们继续详细学习不同类型的索引!


http://www.niftyadmin.cn/n/5866987.html

相关文章

QT中日志的使用案例 || 自动创建、管理、保存QT日志数据

目录 1.quiwidget.cpp 2.widget.cpp 3.widget.h 4.在需要记录日志的地方直接将信息插入即可 1. 释放 m_fileLog 和 m_textStream 1.1 为什么要关闭和删除 m_fileLog 和 m_textStream&#xff1f; 1.2 如果不这样做会有什么坏处&#xff1f; 3. 总结 4.参考文章 需求分析…

整数二分算法

例题&#xff1a; 给定一个按照升序排列的长度为 n 的整数数组&#xff0c;以及 q个查询。 对于每个查询&#xff0c;返回一个元素 k 的起始位置和终止位置&#xff08;位置从 0开始计数&#xff09;。 如果数组中不存在该元素&#xff0c;则返回 -1 -1。 输入格式 第一行…

5G网络切片辨析(eMBB,mMTC,uRLLC)

URLLC有三大应用场景&#xff0c;分别是eMBB&#xff08;增强型移动宽带&#xff09;、uRLLC&#xff08;高可靠低延时通信&#xff09;和mMTC&#xff08;海量机器通信&#xff09;。 增强型移动宽带&#xff08;eMBB&#xff09;&#xff1a;需要关注峰值速率&#xff0c;容…

【GESP】C++二级真题 luogu-b3955, [GESP202403 二级] 小杨的日字矩阵

GESP二级真题&#xff0c;多层循环、分支语句练习&#xff0c;难度★✮☆☆☆。 题目题解详见&#xff1a;https://www.coderli.com/gesp-2-luogu-b3955/ 【GESP】C二级真题 luogu-b3955, [GESP202403 二级] 小杨的日字矩阵 | OneCoderGESP二级真题&#xff0c;多层循环、分支…

unity学习53:UI的子容器:面板panel

目录 1 UI的最底层容器&#xff1a;canvas 1.1 UI的最底层容器&#xff1a;canvas 1.2 UI的合理结构 2 UI的子容器&#xff1a;面板panel 2.1 创建panel 2.2 面板的本质&#xff1a; image &#xff0c;就是一个透明的图片&#xff0c;1个空容器 3 面板的属性 4 面板的…

大数据平台上的机器学习模型部署:从理论到实

大数据平台上的机器学习模型部署&#xff1a;从理论到实践 大家好&#xff0c;我是Echo_Wish&#xff0c;一名专注于大数据领域的自媒体创作者。今天&#xff0c;我们将深入探讨大数据平台上的机器学习模型部署。随着数据量的爆炸式增长&#xff0c;如何在大数据平台上高效地部…

【LeetCode刷题之路】leetcode155.最小栈

LeetCode刷题记录 &#x1f310; 我的博客主页&#xff1a;iiiiiankor&#x1f3af; 如果你觉得我的内容对你有帮助&#xff0c;不妨点个赞&#x1f44d;、留个评论✍&#xff0c;或者收藏⭐&#xff0c;让我们一起进步&#xff01;&#x1f4dd; 专栏系列&#xff1a;LeetCode…

ubuntu新系统使用指南

1. 更新源 2. 配置rime 输入法 sudo apt install ibus-rimeibus-setup #打开配置界面添加雾凇拼音 cd ~/Documents/Tool/input_source/plumgit clone --depth 1 https://github.com/rime/plum plum #没有梯子就劝退cd plum/bash rime-install iDvel/rime-ice:others/recipe…