MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。MySQL索引常用有:主键索引、唯一索引、普通索引、全文索引和组合索引。还有一些 单列索引、多列索引的说法.
主键索引:
主键是一种唯一性索引,但它必须指定为PRIMARY KEY,每个表只能有一个主键。
唯一索引:
索引列的所有值都只能出现一次,即必须唯一,值可以为空。
普通索引:
基本的索引类型,值可以为空,没有唯一性的限制。
全文索引:
全文索引的索引类型为FULLTEXT。全文索引可以在varchar、char、text类型的列上创建。可以通过alter table或create index命令创建。FULLTEXT 用于搜索很长一篇文章的时候,效果最好。alter table 表名 add FULLTEXT(‘字段名’)
组合索引:
指多个字段上创建的索引,只有在查询条件中使用了创建索引时的第一个字段,索引才会被使用。
数据库查询是数据库的最主要功能之一。不管是哪一种方式的索引都是为了,通过给字段添加索引可以提高查询数据的读取速度,提高项目的并发能力和抗压能力。因此数据库系统的设计会从查询算法的角度进行优化。最基本的查询算法当然是顺序查找,这种复杂度为O(n)的算法在数据量很大时速度是有很大程度的下降的。
所以不同的数据库会采用不同的的索引方法:主要是因为内核引擎的不一致,所以数据库在数据结构上算法不一样, 常用的有BTree索引,B+Tree索引,哈希索引,全文索引。MySQL中最常见的两种存储引擎分别是MyISAM和InnoDB,FULLTEXT(全文)索引仅可用于MyISAM和InnoDB,只有memory(内存)存储引擎支持哈希索引。
BTree 的数据结构,从查阅到的数据,类是于二分法进行查找,采用二分法进行查找是非常节省时间的,如果是数据扩大256倍,用二分法查找也只会是原来时间的8倍.
B+Tree索引是BTree 的变种,在B+Tree结构都在经典BTree的基础上,增加了顺序访问指针指向相邻的叶子。因为B+Tree在空间上的处理会比BTree更优化,所以B+Tree更适合实现外部存储索引结构
全文索引
在大量的文本数据中去寻找少量的几个数据,会大大的增加响应时间,所以如果生成全文索引,生成文本单词清单,就快速很多。
哈希索引
哈希索引用索引列的值计算该值的hashCode,然后在hashCode相应的位置查找该值所在行数据的物理位置,使用散列算法,因此访问速度非常
但是有一点要注意的是,数据库的索引是为了增加数据库查询的速度。但是也增加创建和维护时间,减慢写入速度。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现