• 14.8.9 Clustered and Secondary Indexes


    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 使用更多的空间,因此一个短的主键是有优势的
    

  • 相关阅读:
    1405ST软件测试课的要求补充说明
    软测实验课安排和考试
    Asp.Net 4.0 FormAuthentication 原理
    微信支付-“申请退款”接口遇到curl出错,错误码:58
    前端资源构建-Grunt环境搭建
    微信服务号开发-获取用户位置信息
    微信支付开发-当前页面的URL未注册
    Using Redis to store php session
    nginx performance monitor
    thinkphp nginx php-fpm url rewrite 导致 404 错误
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13350056.html
Copyright © 2020-2023  润新知