transation     item
1              a
1              b
1              c
1              d
2              b
2              c
2              d
3              a
3              c
3              e
3              f
4              d
4              e
4              f
.              .
.              .
.              .
然后建立bitmap索引a         1010
b         1100  
c         1110
d         1101
e         0011
f         0011然后通过"并"处理找出两个两个的相似度例如: ab=1, ac=2,......请问用plsql该咋写,本人初次接触,完全摸不着方向

解决方案 »

  1.   

    缺省情况下,是否使用某种索引是有Oracle数据库系统来决定的。可以用下面的方式强行使用某个索引:
    /*+INDEX(TABLE INDEX_NAME)*/
    表明对表选择索引的扫描方法.
    例如:
    SELECT /*+INDEX(BSEMPMS SEX_INDEX)*/ FROM BSEMPMS WHERE SEX='M';
      

  2.   

    那请问能否直接拿 index 的数据进行运算呢?
      

  3.   

    index是查询时调用检索的,如果要计算的话最好还是自己建数据结构楼主想得到怎样的计算方式?是函数f('a','b') -> 1这样吗?
      

  4.   

    我想调用表中的bitmap index 的数值来进行运算:例如: 假设已建立了bitmap index
    a        1010 
    b        1100  
    c        1110 
    d        1101 
    e        0011 
    f        0011a并b = 1000 = 1(他们两个只有头一个1是相等的)
    a并c = 1010 = 2(他们两个第一个1和第三个1是相等的)
    .....
     
    大概是这样
      

  5.   

    不太明白ls的意思,我用的是位图索引,
    transation    item 
    1              a 
    1              b 
    1              c 
    1              d 
    2              b 
    2              c 
    2              d 
    3              a 
    3              c 
    3              e 
    3              f 
    4              d 
    4              e 
    4              f 
    .              . 
    .              . 假设table的名字叫做tab,根据这个表所创建的话,
    create bitmap index idx2_item on tab (item);
    那应该会产生这样的索引
    a        1010 
    b        1100  
    c        1110 
    d        1101 
    e        0011 
    f        0011