各位,我有两张表tab1,tab2;关联查询,比如:select count(*) from tab1,tab2 where tab1.id=tab2.id
但是其中where条件的两个字段数据类型不同,比如:tab1.id varchar2(14),tab2.id number(14),这里需要说明的是这两张表表结构是不可以改动的,因为这是操作库上的表结构,是从操作库上抽取过来的底层数据,我这边对底层数据进行汇总,
tab1.id建了索引,tab2.id也建了索引,问题是关联是需要类型转换,不走索引了,而这两张表都是千万条记录级别的。请求仔细帮我看看,出点注意。ok?

解决方案 »

  1.   

    你可以修改一下索引,把他们建立成函数索引,函数索引可以把函数转换后的值作为索引值进行操作
    比如
    create index idx1 on tab1 (id);
    create index idx2 on tab2 (to_char(id));
    这样试试看吧
    关联的时候
    select count(*) from tab1,tab2 where tab1.id=to_char(tab2.id)
      

  2.   

    具体是什么语句?where条件都有啥?索引情况 ? 表分析情况? 数据分布情况?版本?