原设计中a表中有两个字段r1、r2,分别对应b表中的id,也就是说两个表是一对二的关系
a表数据量约几十万条记录,
请帮忙分析一下是用现有方案好呢还是将这两个字段的数据放到子表里好呢?r1、r2均可能为空
主要考虑查询的优化问题
方案1查询时需要 r1 = 'aa' OR r2 = 'aa'
方案2查询时需要做表联接

解决方案 »

  1.   

    可否麻烦二位说一下这个索引如何来建?
    还有一个问题,现在想做个统计,这个SQL是否有其它方式进行优化?
    SELECT aa.r,count(*) 
    FROM 
    (
      SELECT a.id,a.r1 AS r FROM a 
      UNION
      SELECT a.id,a.r2 AS r FROM a 
    ) aa
      

  2.   

    报歉,忘写一句:
    SELECT aa.r,count(*) 
    FROM 
    (
      SELECT a.id,a.r1 AS r FROM a 
      UNION
      SELECT a.id,a.r2 AS r FROM a 
    ) aa 
    GROUP BY aa.r
      

  3.   

    别费尽建立函数索引了,没什么太大意义.
    oracle已经提供了子表作为字段的功能,为何不用子表呢?