14.8.9 Clustered and Secondary Indexes

每个InnoDB 表有一个特殊的索引称为 clustered index 用于存储数据。

通常, clustered index 是主键的同义词。

为了使查询得到最好的性能,插入, 和其他数据库操作,你必须了解 InnoDB如何使用 clustered index 

来优化最创建的查询和DML操作对于每个表

1. 当你定义一个主键在你的表上, InnoDB 使用它作为clustered index.

定义一个主键对于每个你创建的表, 如果没有逻辑唯一或者非空列或者列的集合,增加一个新的自增列,

自增列的值会自动填充

2.如果你没有定义一个主键对于你的表, MySQL 定位第一个唯一索引 索引所有的列是NOT NULL 

InnoDB 使用它作为 clustered index. 

3.如果 table 没有主键索引或者合适的唯一索引,InnoDB 内部生成一个隐藏的 clustered index

在一个合成的列 包含row ID 值。

记录是按ID排序 InnoDB 分配给记录在这个表里。

 row ID 是一个6字节的字段 自动增加当新行插入时。因此, 激励安row ID排序是按物理插入的顺序

 Clustered Index 如何加速查询:

访问一个记录通过clustered index 是快速的因为 index 搜索直接指向page有所有的记录数据。

如果一个表是大的,clustered index 结构通常节省一个磁盘I/O操作当比较存储组织 存储记录使用一个不同的页

Secondary Indexes 和 Clustered Index的关系:

所有的索引除了 clustered index 都被称为secondary indexes.

在InnoDB, 每个记录在一个 secondary index 包含primary key columns 对于记录,

以及列指定用于secondary index. 

如果主键列是太长了, secondary indexes 使用更多的空间,因此一个短的主键是有优势的

14.8.9 Clustered and Secondary Indexes的更多相关文章

  1. 14.2.5.2 Clustered and Secondary Indexes

    14.2.5.2 Clustered and Secondary Indexes : 每个InnoDB 表 有一个特别的索引称为clustered index 行数据存储的地方. 典型的,cluste ...

  2. Clustered and Secondary Indexes

    Clustered and Secondary Indexes secondary index A type of InnoDB index that represents a subset of t ...

  3. 在InnoDB,记录在 non-clustered indexes(也被称为secondary indexes) 包含了主键值

    In InnoDB, the records in non-clustered indexes (also called secondary indexes) contain the primary ...

  4. 14.2.5.6 Adaptive Hash Indexes 自适应Hash Indexes

    14.2.5.6 Adaptive Hash Indexes 自适应Hash Indexes adaptive hash index(AHI) 让InnoDB 执行更加像在一个内存数据库里在, 在不牺 ...

  5. Clustered和Nonclustered Indexes 各自得特点和区别及长短处

    1 簇索引 簇索引对表的物理数据页中的数据按列进行排序然后再重新存储到磁盘上即簇索 引与数据是混为一体的它的叶节点中存储的是实际的数据由于簇索引对表中的数据一 一进行了排序因此用簇索引查找数据很快但由 ...

  6. 13.1.17 CREATE TABLE Syntax

    13.1.17 CREATE TABLE Syntax 13.1.17.1 CREATE TABLE ... LIKE Syntax 13.1.17.2 CREATE TABLE ... SELECT ...

  7. Mysql锁(翻译)

    内容主要是对mysql文档的翻译. 1. shared(s) 共享锁2. exclusive(x) 排它锁 innodb的s锁和x锁是行级锁.事务T1获得s锁,事务T2仍然可以获得s锁.事务T1获得x ...

  8. InnoDB On-Disk Structures(二)--Indexes (转载)

    转载.节选于 https://dev.mysql.com/doc/refman/8.0/en/innodb-indexes.html This section covers topics relate ...

  9. MySQL 加锁处理分析

    1    背景    1 1.1    MVCC:Snapshot Read vs Current Read    2 1.2    Cluster Index:聚簇索引    3 1.3    2P ...

随机推荐

  1. ios下微信标题修改

    很多开发过微信的人估计都遇到过这样的问题,ios下微信页面标题更改不了,而安卓却可以直接用:document.title="你的标题". 下面是解决这个问题的hack: 1.jqu ...

  2. Oracle11g - dos 命令 sqlplus/nolog 提示 不是内部命令解决办法

    继安装Oracle 11g后,解锁SCOtt时发现 dos 命令 sqlplus/nolog 提示 不是内部命令解决办法   通过实际验证现整理有效方法步骤如下: 步骤一:开始>>找到Or ...

  3. JS如何封装一些列方法为一个对象的操作,然后集中管理这些操作,方便修改和调用

    var Api = { ajax:{ // 添加项目 旧! add_project : function(pro_name, html, css, js,callback) { $.post(&quo ...

  4. 内核增加支持yaffs2错误问题汇总

    Q1: fs/yaffs2/yaffs_mtdif2.c:xxx: error: 'struct xxx1' has no member named 'fun_xxx' A1:比对fun_xxx和st ...

  5. struts 2读书笔记-----struts2的开发流程

    一.将struts 2的lib文件夹下地commons-fileupload.jar.commons-io.jar.freemarker.jar.javassist.jar.ognl.jar.stru ...

  6. IIS7报错:如果要使用托管的处理程序,请安装 ASP.NET

    转载至码农SeraphWU IIS7报错:如果要使用托管的处理程序,请安装 ASP.NET 进入CMD 输入如下命令即可 "%WINDIR%\Microsoft.NET\Framework\ ...

  7. python基础知识九

    sys模块 sys模块包含系统对应的功能.我们已经学习了sys.argv列表,它包含命令行参数. 命令行参数 例14.1 使用sys.argv #!/usr/bin/python # Filename ...

  8. iOS 十六进制的相加取反

    ios中将NSstring字符串转换成char类型 NSString *string = [NSString stringWithFormat:@"5D"]; const char ...

  9. GCDTimer

    #import <Foundation/Foundation.h> @interface JKTimerManager : NSObject + (instancetype)sharedT ...

  10. mysql5.7.14安装与配置

    参考文章链接: http://jingyan.baidu.com/article/afd8f4de9006d934e286e9fd.html http://www.cnblogs.com/wenthi ...