Mysql的索引

索引:从本质上来说索引就是一个数据结构,索引也是磁盘文件。使用索引需要进行磁盘IO操作。当索引文件过多时,数据的改变会导致索引的更改,而索引也涉及了磁盘的IO操作。当表中的数据增加到几十万或者几百万时,查询数据将会很慢,所以引入了一个索引。目的是提高查询的效率。

索引的类型:单列索引 多列索引

unique 和 primary key自动会创建索引

在InnoDB中,主键索引(即聚簇索引)和辅助索引(即非聚簇索引)的数据存储方式是不同的:

  1. 聚簇索引(Clustered Index):

    • InnoDB会根据主键创建聚簇索引,数据行的物理存储顺序与主键值的顺序相同。
    • 数据行的实际数据存储在B+树的叶子节点上,因此查询主键时可以直接从叶子节点读取到完整的行数据。
    • 聚簇索引的叶子节点不仅包含了索引键(主键值),还包含了与该键相关联的所有行数据。
  2. 辅助索引(Secondary Index):

    • 辅助索引的叶子节点只包含索引键值和对应的主键值。为了找到完整的行数据,需要先通过辅助索引找到主键,然后再通过聚簇索引查找相应的行数据。

总结来说,InnoDB引擎下的数据确实是存储在索引树节点上的,具体的存储方式取决于数据是通过聚簇索引还是辅助索引进行访问的。

  • 索引结构:索引通常采用B树或B+树结构,这种平衡树结构能够保持数据按序存储,使得在树中的查找、插入、删除操作的时间复杂度为O(log n)。这意味着即使在大型数据集上,查找特定数据的速度也能保持在一个较低的水平。
  • 快速定位:通过索引,数据库可以快速定位到需要的行,而不需要遍历整个表。尤其是在查询条件中使用了索引字段,数据库可以直接跳转到相应的索引节点,避免不必要的扫描

当没有索引时,进行全表扫描,而有索引时只需要进行索引扫描速度会更快一些。const是主键或者唯一键,而ref是扫描索引。通过explain去观看索引使用的情况。

当给name列加上索引时:经常作为where过滤条件时要加上索引,字符串列创建索引时尽量控制索引的长度不能过程。索引字段涉及类型强转或者函数将不会使用索引。

删除索引:drop index nameindex on student;

相关推荐
远方16095 分钟前
0x-3-Oracle 23 ai-sqlcl 25.1 集成安装-配置和优化
数据库·ide·ai·oracle
喵叔哟1 小时前
第1章:Neo4j简介与图数据库基础
数据库·oracle·neo4j
喵叔哟1 小时前
第6章:Neo4j数据导入与导出
数据库·oracle·neo4j
甜甜的资料库2 小时前
基于微信小程序的睡眠宝系统源码数据库文档
数据库·微信小程序·小程序
代码老y2 小时前
Redis:现代应用开发的高效内存数据存储利器
数据库·redis·缓存
远方16093 小时前
15-Oracle 23ai Vector Search Similarity Search-向量相似性和混合搜索-实操
数据库·ai·oracle
zz0723203 小时前
第二十周:Redis(二)
数据库·redis·缓存
杨超越luckly3 小时前
“详规一张图”——新加坡土地利用数据
前端·数据库·arcgis·信息可视化·数据分析
NineData4 小时前
NineData数据库DevOps功能全面支持百度智能云向量数据库 VectorDB
数据库·人工智能·mysql
TDengine (老段)4 小时前
TDengine 开发指南—— UDF函数
java·大数据·数据库·物联网·数据分析·tdengine·涛思数据