假定表CUSTOMERS有5万条数据,如果基于CUST_GENDER列(用于存储性别,只有F和M两种值)建立B*-树索引,每个索引入口都会包含索引值(平均1字节)和受限ROWID(6个字节),则此索引占用大约100K空间;如在该列建立位图索引,则会建立两个位图,占用空间总计大约16K。————摘自《oracle 9i 快速入门》一书请问,上面的100K和16K是如何计算出来的?这两种索引的数据结构,差别在哪里?先谢谢各位高手了。

解决方案 »

  1.   

    不一定,还和其他因素有关,比如数据分布情况。
    B-tree当然是树型结构,就跟字典一样,查偏旁,再查字,再查解释。
    BITMAP是位图, 用0和1表示,
    比如一共10笔数据,F/M。
    F 0100001010
    M 1011110101
    用10个
      

  2.   

    用10个bit位表示。不过这只是逻辑原理,实际会再优化一下。
      

  3.   

    谢谢解释,但是位图的情况我还是得不出16K。
    按照您的思路,我是这样理解的,5万笔数据的情况。
    F 0101010001....(5W bit)
    M 1010101110....(5W bit)
    总共10W bit ---->  5W byte  ------> 大约50K空间可是16K是如何出来的呢?
    估计是我的思路错了,如果有错误,请大家帮我指出来。谢谢。