有两表如下
T1 ( A   CHAR, B  CHAR ) ;
T2 ( A   CHAR, C  NUMBER(10,2)) ;
需要一列表展示 A , B , C 用biee做了一个简单的报表,通过抓到的会话日志sql 
如下: select distinct t3.a, t3.b ,t3.c from (
       select distinct t1.a , t1.b , t2.c from t1, t2
       where t1.a= t2.a 
       )t3 ;
是一个很简单的查询 ,但是为什么biee会自动加上一个distinct呢 ?这样性能比不加慢了很多,请问各位大虾,是否在biee某个地方需要配置一个某个参数,就可以将这个distinct去掉?
谢谢了!

解决方案 »

  1.   

    是啊 ,如果加了distinct,首先要去重,很耗时的 。
    我就是问大家,有什么办法在biee中可以将distinct拿掉吗?
      

  2.   

    有个解决办法是在物理层把数据库features中的DISTINCT_SUPPORTED的VALUE的勾去掉,
    同时把server\Config\DBFeatures.INI中相应数据库的IS_DISTINCT_SUPPORTED参数设置为NO
    (这一步不是必须的,这样做只是修改了features中的默认值,以便在做一致性检查的时候不会有警告)
    当然,这样做了之后,如果你以后就没办法使用逻辑表中来源中的select distinct values选项了,因为你告诉BIEE你的数据库不支持DISTINCT了。变通的办法就是,在物理层建立两个数据库,一个设置为支持distinct,一个设置为不支持。
    另外,就算你设置成了不支持distinct(生成的SQL中不包含distinct),Answer在报表呈现时还是会去掉重复值,这是一个BUG(bug号为8615188)
    据说是在10.1.3.4.0 Linux x86 版本上修复了,反正我的Windows版是没有修复的。