首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在mysql中索引是如何在内部工作的?

问在mysql中索引是如何在内部工作的?
EN

Stack Overflow用户
提问于 2011-03-19 12:25:26
回答 5查看 3.2K关注 0票数 1

我正在对我的表使用索引,但老实说,我不知道它们在内部是如何工作的。

假设我有下面的表

代码语言:javascript
复制
id age
1  20
2  35
3  19 
4  18

如果我建立一个'age‘索引,mysql是如何组织行的?它的组织依赖于字段类型吗?或者...?mysql如何为unicode创建索引??

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-03-19 12:34:45

MySQL索引通常是按字节排序的。索引的第一部分是被索引的数据(通常是完整字段,尽管它可以是前几个字符的部分索引),第二部分是相关的主键。

对于处理unicode,如果MySQL知道,它的操作就像其他语言中的比较器类一样。支持unicode的MySQL版本有一段代码,它可以识别unicode的正确顺序,并且可以比较两个unicode字符,以判断哪个字符大于另一个字符。

你的InnoDB结果索引(假设你的PK是id)是:

代码语言:javascript
复制
18->4
19->3
20->1
35->2

对于MyISAM,将使用对实际行位置的偏移量引用。

另外,有一篇好文章可能会给出一些见解:http://www.xaprb.com/blog/2006/07/04/how-to-exploit-mysql-index-optimizations/

票数 3
EN

Stack Overflow用户

发布于 2011-03-19 12:37:57

MyISAM保持行的插入顺序,而不是按键聚集。索引是分层的,叶子指向实际的行。这个article提供了一个很好的介绍。

票数 3
EN

Stack Overflow用户

发布于 2011-03-19 12:36:29

我不确定您所说的“内部”是什么意思,但这里有一段MySQL文档的pretty comprehensive片段,它解释了MyISAM引擎中的索引。

当然,MySQL是开源的,如果你的意思是想了解索引是如何工作的,那么你可以看看代码。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5360063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档