zoukankan      html  css  js  c++  java
  • 14.2.6.2 Clustered and Secondary Indexes 聚簇索引和第2索引

    14.2.6.2 Clustered and Secondary Indexes 聚簇索引和第2索引
    
    
    每个InnoDB 表有一个特别的索引叫做clustered index,用于行的数据被保存,
    
    
    clustered index  是主键的同义词。 为了得到最好的查询性能,插入和其他数据库操作,
    
    你必须了解InnoDB如何使用 clustered index 来优化常用的查询和DML操作。
    
    1.当你定义了表的主键,InnoDB 使用它作为 clustered index .
    
    
    为你创建的每个表定义一个主键, 如果没有一个逻辑的unique 和非空列或者多列,
    
    增加一个自动增加的列,其值是自动填充的。
    
    
    2.如果你不定义一个表的主键,MySQL 定位第一个UNIQUE index ,所有的列都是NOT NULL
    
    InnoDB 使用它作为一个clustered index 
    
    3.如果表没有主键或者合适的UNIQUE index,InnoDB 内部产生一个隐藏的clustered index 在一个隐藏的列
    
    包含row ID 值。
    
    
    rows 是按ID排序,InnoDB 分配记录在这些表里。
    
    row ID 是一个 6字节域 单调的增加到新的记录插入时, 记录按row ID 排序是按物理插入的顺序
    
    
    
    Clustered Index  如何加速查询:
    
    
    
    访问 一条记录通过clustered index 是快速的 因为索引搜索直接导致 所有行的页。
    
    
    如果表是大的,clustered index 结构通常保存一个disk I/O 操作 当跟其他的存储组织对比
    
    
    参数数据行使用一个不同的页。(比如,MyISAM 使用一个文件用于数据,另一个用于Index records)
    
    
    How Secondary Indexes Relate to the Clustered Index
    
    
    
    所有的indexes 除了clustered index 是一个 secondary indexes. 
    
    
    
    在InnoDB,每个record 在 secondary index 包含主键列, 以及在 secondary index指定的列。
    
    
    InnoDB 使用主键值来搜索记录。
    
    
    如果主键是长的,  secondary indexes  使用更多的空间, 一个短的主键是有利的。
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

  • 相关阅读:
    SQLServer 2008 还原数据库备份版本不兼容的问题
    全排列函数
    n & 1
    最长公共子序列(LCS)最长递增子序列(LIS)
    unity3DGI
    多继承的缺点
    JSON文件导入Unity3d中是空的的问题
    丑数
    整数中1出现的次数
    检测鼠标是否在UI上unity
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13351191.html
Copyright © 2011-2022 走看看