查看“InnoDB:InnoDB 磁盘结构:Indexes”的源代码
←
InnoDB:InnoDB 磁盘结构:Indexes
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
[[category:MySQL]] == 聚集索引和二级索引【!!!】 == 每个 InnoDB 表都有一个称为“'''clustered index'''”的特殊索引,其中存储了行数据。<big>'''通常,聚集索引与 primary key 同义'''</big>。 # 在表上定义“PRIMARY KEY”时,InnoDB 会将其用作聚集索引。为您创建的每个表定义一个主键。如果没有逻辑唯一且非空的列或列集,请添加一个新的“auto-increment”列,其值将自动填写。 # 如果您没有为表定义“PRIMARY KEY”,则 MySQL 将找到'''第一个'''“UNIQUE”索引,其中所有键列均为“NOT NULL”,而 InnoDB 将其用作聚集索引。 # 如果表没有“PRIMARY KEY”或合适的“UNIQUE”索引,则 InnoDB 在包含行 ID 值的合成列上内部生成名为“'''GEN_CLUST_INDEX'''”的'''隐藏聚集索引'''。这些行由 InnoDB 分配给该表中的行的 ID 排序。行 ID 是一个 '''6''' 字节的字段,随着插入新行而单调增加。因此,按行 ID 排序的行实际上在插入 Sequences 上。 === 聚集索引如何加快查询速度 === 通过聚集索引访问行是快速的,因为索引搜索直接导致包含所有行数据的页面。如果表很大,则与使用不同于索引记录的页面存储行数据的存储组织相比,聚集索引体系结构通常可以节省磁盘 I/O 操作。 === 二级索引如何与聚集索引相关 === <big>'''除聚集索引以外的所有索引'''都称为“'''secondary indexes'''”</big>(二级索引、第二索引、辅助索引)。在 InnoDB 中,'''辅助索引中的每个记录都包含该行的主键列以及为该辅助索引指定的列'''。 InnoDB 使用此主键值在聚集索引中搜索行。 * 如果主键较长,则辅助索引将使用更多空间,因此具有较短的主键是有利的。 == InnoDB 索引的物理结构 == == 排序索引版本 == == InnoDB FULLTEXT 索引 ==
返回至“
InnoDB:InnoDB 磁盘结构:Indexes
”。
导航菜单
个人工具
登录
命名空间
页面
讨论
大陆简体
已展开
已折叠
查看
阅读
查看源代码
查看历史
更多
已展开
已折叠
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
笔记
服务器
数据库
后端
前端
工具
《To do list》
日常
阅读
电影
摄影
其他
Software
Windows
WIKIOE
所有分类
所有页面
侧边栏
站点日志
工具
链入页面
相关更改
特殊页面
页面信息