索引的概念与类型
展开全部
索引在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操作。
索引有很多类型,可以为不同的场景提供更好的性能。在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操作。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询