zoukankan      html  css  js  c++  java
  • 索引

    唯一索引和聚簇索引 没直接的关系  具体百度两者定义

    https://zhidao.baidu.com/question/1836190186249451860.html

    聚簇索引只能有一个 唯一索引可以有多个

    聚簇索引 快 因为叶子节点存的就是表记录 表记录太多了 也

    唯一索引快 因为 找到了一条就不会继续找了 有点像 limit   不过 唯一索引 新增要校验唯一性 表数据很多时

    聚簇索引 

    1 唯一性

    2 叶子节点 以页的形式 直接存储行数据  相对非聚簇索引的 InnoDB的叶子节点存主键(聚簇索引)值,MyISAM的叶子节点存记录指针 更快

    组合索引 太多层 不好的地方  我猜 索引的每一个唯一组合都会对应一个虚拟的id  如五层 组合索引 那排列组合下 虚拟id 可能太多了好像 也不太对  最多也不会超过表的记录数

    索引覆盖 using index  所需的查询

    (1)首先指出一个误区,主键并不一定是聚集索引,只是在SQL SERVER中,未明确指出的情况下,默认将主键定义为聚集,而ORACLE中则默认是非聚集,因为SQL SERVER中的ROWID未开放使用。
    (2)聚集索引适合用于需要进行范围查找的列,因为聚集索引的叶子节点存放的是有序的数据行,查询引擎可根据WHERE中给出的范围,直接定位到两端的叶子节点,将这部分节点页的数据根据链表顺序取出即可
    (3)聚集索引尽量建立在值不会发生变更的列上,否则会带来非聚集索引的维护;(因为InnoDB引擎下 非聚簇索引 叶子节点存的是聚簇索引的值)
    (4)尽量在建立非聚集索引之前建立聚集索引,否则会导致表上所有非聚集索引的重建;(因为InnoDB引擎下 非聚簇索引 叶子节点存的是聚簇索引的值)
    (5)聚集索引应该避免建立在数值单调的列上,否则可能会造成IO的竞争,以及B树的不平衡,从而导致数据库系统频繁的维护B树的平衡性。聚集索引的列值最好能够在表中均匀分布。

    ==待理解

  • 相关阅读:
    pip install MySQL-python 失败
    E: Unable to correct problems, you have held broken packages
    git 提交顺序
    git 分支
    ubuntu 安装git
    ubuntu 有些软件中不能输入中文
    ubuntu 完全卸载mysql
    Linux中常用操作命令
    基于注解的Spring AOP的配置和使用
    log4j配置详解
  • 原文地址:https://www.cnblogs.com/light-train-union/p/12824934.html
Copyright © 2011-2022 走看看