zoukankan      html  css  js  c++  java
  • 聚簇索引和非聚簇索引

    数据库中的聚簇索引和非聚簇索引

    聚簇索引:聚簇索引的顺序就是数据的物理存储顺序

    聚簇索引是顺序结构与数据存储物理结构一致的一种索引,并且一个表的聚簇索引只能有唯一的一条;

    非聚簇索引:索引顺序与数据物理排列顺序无关。

    非聚簇索引记录的物理顺序与逻辑顺序没有必然的联系,与数据的存储物理结构没有关系;一个表对应的非聚簇索引可以有多条,根据不同列的约束可以建立不同要求的非聚簇索引;

    一个表最多只能有一个聚簇索引

    聚簇索引的叶节点就是数据节点,非聚簇索引的叶节点仍然是索引点

    建立索引的目的

    为了加快找到目标的速度,节约查找的时间

    有了索引一定变快了么?

    建立索引的弊端:1.增加了数据库的存储空间

    1. 在插入和修改数据时要花费较多的时间(因为索引也要随之变动)

    建立索引

    例如:

    people 字段 ID Name UniqueCode

    Name建立非聚簇索引

    Create nonclustered INDEX indexTestTable_index_name on people(Name)

    UniqueCode建立聚簇索引

    Create CLUSTERED INDEX INdexTestTable_index_uniquecode on people(UniqueCode)

    总结索引使用原则:
    1:不要索引数据量不大的表,对于小表来讲,表扫描的成本并不高。
    2:不要设置过多的索引,在没有聚集索引的表中,最大可以设置249个非聚集索引,过多的索引首先会带来更大的磁盘空间,而且在数据发生修改时,对索引的维护是特别消耗性能的。
    3:合理应用复合索引,有某些情况下可以考虑创建包含所有输出列的覆盖索引。
    4:对经常使用范围查询的字段,可能考虑聚集索引。
    5:避免对不常用的列,逻辑性列,大字段列创建索引。

    对于MYsql数据库:

    对于MyIASM搜索引擎和InnoDB搜索引擎、

    MyIASM是按列值和行号来组织索引的,他的叶子节点保存的实际上是指向存放数据的物理块的指针。

    InnoDB按聚簇索引的形式存储数据

  • 相关阅读:
    第二章 第二节 安装Eclipse
    windows10下成功安装docker splash及遇到问题的解决方案
    关于.net程序员面试的问题
    ajax更新时 updatepanel 更新问题
    关于分页问题解决方法
    2条路 代码生成 or 配置
    Accordion控件之仿OutLookBar
    《C#3.0 in a Nutshell,3rd Edition》之C#3.0和.net3.5基本介绍篇
    ERP之我见
    2009岁末之复用系统框架(B/S)
  • 原文地址:https://www.cnblogs.com/xuesheng/p/7922115.html
Copyright © 2011-2022 走看看