对比参考ORACLE索引类型

逻辑上:

  • Single column 单列索引

  • Concatenated 多列索引

  • Unique 唯一索引

  • NonUnique 非唯一索引

  • Function-based 函数索引

  • Domain 域索引

物理上:

  • Partitioned分区索引

  • NonPartitioned非分区索引

  • B-tree:

    • Normal 正常型B树

    • Rever Key 反转型B树

    • Bitmap 位图索引

索引结构:

B-tree:

  • 适合与大量的增,删,改(OLTP)

  • 不能用于包含OR操作符的查询

  • 适合高基数的列(唯一值多)

  • 典型的树状结构

  • 每个节点都是数据块

  • 大多数都是物理上一层,两层或三层不定,逻辑上三层,mysql一般都是3层除非数据量非常大 才会变成四层

  • 叶子块数据是排序的,从左向右递增

  • 在分支块和根块中放的是索引的范围

Bitmap:

  • 适合决策支持系统

  • 做UPDATE代价非常高

  • 非常适合OR操作符的查询

  • 基数比较少的时候才能建位图索引

树形结构:

  • 索引头:

    • 开始ROWID,结束ROWID(先列出索引的最大范围)       

  • BITMAP

    • 每一个BIT对应着一个ROWID,它的值是1还是0,如果是1,表示着BIT对应的ROWID有值