美文网首页
Database | Index Structures for

Database | Index Structures for

作者: _LadyBug_ | 来源:发表于2018-11-26 19:10 被阅读0次

Single-level ordered indexed

index

index是另外一個file,針對要被搜尋的欄位
减少block IO 的次数

顺序索引的类型

Primary index

本身档案是 sorted files
根据primary key排序
针对primary key建立索引档
记录每一个block的第一笔(Anchor Record)
有多少entry取决于有多少个block,然后index file有多少个block又取决于一个block能放多少个entry
有多少block取决于每笔记录的长度→每个block可以放几笔资料
查询
针对你要查询的值,先在index里面做binary search
插入和删除
问题:
解决:using an unordered overflow file
删除不直接删除,而使用deletion markers(lazy deletion)

Cluster index

本身是 sorted file
但按照nonkey排序,因此会有重复
索引比资料少(non dense)
对每一个不同的值有一个entry
记录第一个出现X的block
插入
可能会使index变动
解决办法:1、每个block多预留空间

Secondary index

现在档案按照别的栏位排序或者没有排序 (Non-ordering)
想要根据某一个栏位加速查询
每一个可能的值在index里都要出现
dense
如果indexing field是nonkey,而档案没有按照他的顺序排
建立两层index
第一层记录distinct value,第二层记录这个值出现的block

一个档案最多有一个primary index或者一个clustering index,不能兼而有之
一个档案可以有好几个secondary index
考虑index的代价,合理设置资料按什么排序

Dense & Nondense index

Multilevel indexes

  • ISAM(Index Sequential Access Method)
    针对primary key可以有两层index

Dynamic multilevel indexes using B-trees and B+-trees

  • B-Trees
    -- M-way search tree
    -- binary search tree 的延伸
    -- B-tree order
  • B+-Trees
    --所有被搜寻的资料都是放在叶子节点
    --跟B-Tree不一样,B-tree资料本身也是标兵,B+树的非叶子节点只是帮助查询用的
    --好处是
    1、演算法比较简单
    2、Range query比较简单,因为都是在同一层里顺序存放的

Multiple dimensional Index


2016.6.14


Index on multiple keys

  • multiple dimensional indexing
  • applications
    -- multidimensional query(partial match range query)
    where (...) & (...)
    1 可以分别建立index 再把查询的结果做交集
    2 或者multilevel indexes
  • partitioned hash
    hashing on (age, salary) 二维
    1 bit for age
    2 bit for salary
  • grid files
    把多维空间切成格子
    lines取决于资料分布
    grid放在主记忆体
  • kd-trees
  • quad-trees
    每次都是切四份(四个象限)
    每个象限对应一个block
    如果哪一个block爆掉,就recursively切成四个象限
  • R-trees
    n维的B+tree

Bitmap index

  • 有多少笔记录就有多少个bit
  • 根据想要查询的栏位建bitmap
  • 做 logical and / or 运算
  • 速度很快
  • 适合cardinality低的 ,例如:性别,只有两种; 薪水,只有五个等级

SQL建index

Indexing of Strings

  • Strings can be variable length
  • 有时候会做 prefix compression

Tuning Indexes

  • 什么时候要建立index:栏位经常被查询而速度较慢
  • 也要看资料更新是不是很频繁,因为index会跟着动

相关文章

网友评论

      本文标题:Database | Index Structures for

      本文链接:https://www.haomeiwen.com/subject/ipvwsftx.html