with aaa as (select * from  tableone where 时间 =  to_date(‘2011-4-20’,'yyyy-mm-dd')
 
 由于的 tableone 数据量很大
  在下面我要对 aaa 操作  能不能基于aaa建立索引呢。。
   
   还有 如果要建索引的话 是不是 只能才用临时表的方法了。
  
 知道的人 谢谢 给个答复。

解决方案 »

  1.   

    上错说错了,我的理解是with as的不能建索引
      

  2.   


    没听说过with as可以建索引,索引时针对数据库中实际的对象创建的,并分配存储空间
    你想嘛,如果你要对with ..as 用索引,请问你怎么建此索引??还有,至于你说的提高你的查询效率,如果真要想用with ..as 来产生一个临时表,对此临时表做查询
    要提高效率的地方是在as(....)这一块
    也就是说在生成临时表的时候提高
    比如你可以这样:
    WITH tab AS (
      select /*+ materialize */ .. from ....  --在你这里面用你的实际表的索引
    )
      

  3.   


    with t as(
         select ...... from ......
         )
    在with as上建立索引,属于无聊之举;
    索引一般建立在实际表上,为了某些特别的需求,
    比如:在很大量数据的表中检索指定数据时,你可以在检索条件上建立索引,
    假设有下面这个查询:
    select empno,ename,job,sal
    from emp
    where empno in (11,152,100);
    那么我们就可以在empno列上见利索引,这样能有效的加快查询速度。