zoukankan      html  css  js  c++  java
  • 5.3.5 聚簇索引:

    5.3.5 聚簇索引:
    
    
    聚簇索引 并不是一种单独的索引类型,而是一种数据存储方式。具体的细节依赖于其实现方式,
    
    但InnoDB 的聚簇索引实际上在同一个结构中保存了B-Tree索引和数据行。
    
    
    Oracle 用户可能更熟悉索引组织表(index-organized table)的说话,实际上是一个意思
    
    
    InnoDB 将通过主键聚集数据
    
    如果没有定义主键,InnoDB 会选择一个唯一的非空索引代替。如果没有这样的索引,InnoDB 会隐式
    
    定义一个主键来作为聚簇索引。
    
    
    聚集的数据有一些重要的优点:
    
    
    1.可以把相关数据保存在一起。
    
    2.数据访问更快,聚族索引将索引和数据保存在同一个B-Tree中,因此从聚簇索引中获取数据通常
    
    比非聚簇索引中查找更快
    
    
    聚簇索引也有一些缺点:
    
    1.聚簇数据最大限度地提高了I/O密集型应用的性能,但如果数据全部都放在内存中,则访问的顺序就没那么重要了,
    
    聚族索引页就没什么优势了。
    
    
    2.插入速度严重依赖插入顺序,按照主键插入是加载数据到InnoDB表中速度最快的方式。
    
    但如果不是按照主键顺序加载数据,那么在加载完成后最好使用OPTIMIZE TABLE命令重新组织一下表
    
    3.更新聚簇索引列的代价很高,因为会强制InnoDB将每个被更新的行移动到新的位置
    
    4.二级索引(非聚族索引)可能比想象的要更大,因为在二级索引的叶子节点包含了引用行的主键列
    
    5.二级索引访问需要两次索引查找,而不是一次
    
    
    最后一点可能让人有些疑惑,为什么二级索引需要两次索引查找?
    
    答案在于二级索引中保存了"行指针"的实质。 要记住
    
    二级索引叶子节点保存的不是指向行的物理位置的指针,而是行的主键值
    
    这意味着通过二级索引查找行,存储引擎需要找到2级索引的叶子节点获得对应的主键值,
    
    然后根据这个值无聚簇索引中查找到对应的行。
    

  • 相关阅读:
    (转)Scrapy 深入一点点
    解决Scrapy shell启动出现UnicodeEncodeError问题
    js回调方法
    UGUI 之 控件以及按钮的监听事件系统 存档
    重力感应示例
    网格概念
    Flash Player11异步解码Bitmap
    打包包含已修改过的bug
    ios7官方推荐icon尺寸
    项目资源通过swc获取
  • 原文地址:https://www.cnblogs.com/zhaoyangjian724/p/6198930.html
Copyright © 2011-2022 走看看