索引的概念与类型

 我来答
会哭的礼物17
2022-07-22 · TA获得超过1.2万个赞
知道大有可为答主
回答量:6384
采纳率:100%
帮助的人:36.3万
展开全部
索引在mysql之中也被称为“键(key)”是存储引擎用于快速找到记录的一种数据结构。 

索引有很多类型,可以为不同的场景提供更好的性能。在mysql中,索引是在存储引擎层而不是服务器层实现的。所以不同的存储引擎的索引的工作方式是不同的,也不是所有的存储引擎都支持所有类型的索引。即使多个存储引擎支持同一种类型的索引,其底层的实现也是不同的。

        这里引用维基百科的定义: B树 (英语:B-tree)是一种自平衡的 树 ,能够保持数据有序。这种数据结构能够让查找数据、顺序访问、插入数据及删除的动作,都在 对数时间 内完成。B树,概括来说是一个一般化的 二叉查找树 (binary search tree),可以拥有多于2个子节点。与 自平衡二叉查找    树 不同,B树为系统大块数据的读写操作做了优化。B树可以减少定位记录时所经历的中间过程,从而加快存取速度。

         大多数时候人们在提到索引但如果特别指明索引的类型的时候,人们指的是 B-TREE 索引。

        B-TREE 通常意味着所有的值都是按顺序存储的,并且每一个叶子页到根的距离都相同

        B-TREE 索引能够加快访问数据的速度,是因为存储引擎不再需要进行全表扫描来获取需要的数据,取而代之的是从索引的根节点开始搜索。

        B-TREE 对索引列是顺序组织存储的,所以很适合查找范围数据

        哈希索引是基于哈希表实现,只有精确匹配索引所有列的查询才有效。对于每一行数据,存储引擎都会对所有的索引列计算一个哈希码( hash code ) 哈希索引将所有的哈希码存储在索引中,同时在哈希表中保存指向每个数据行的指针。

        和B-Tree索引不同,这类索引无须前缀查询。空间索引会从所有维度来索引数据。查询时,可以有效地使用任意维度来组合查询。必须使用 MySQL 的 GIS 相关函数如 MBRCONTAINS() 等来维护数据。但mysql对GIS的支持目前还不完善,不建议使用。

   全文索引是一种特殊类型的索引,它查找的是文本中的关键词,而不是直接比较索引中的值。全文搜索和其他几类索引的匹配方式完全不一样。它有许多需要注意的细节:如停用词,词干,和复数,布尔搜索等。全文索引更类似于搜索引擎做的事情,而不是简单的where条件匹配。全文索引适用于MATCH AGAINST操作。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式