从SQL语句来看,你的第二条多出两张表area       h, param      i
where条件中多出这么一个关系:and a.status = i.param_id我要问的是a.status与i.param_id有没有做过index?尝试给这两个字段加index试试看

解决方案 »

  1.   

    首先表示感谢,你能回我的这个贴。a.status没有建索引,因为但是i.param_id已经建索引了。我现在主要的情况是 增加area这个表,oracle的查询就不对
      

  2.   

    从你提供的信息分析:
    慢的原因肯定是出在area表上.你检查一下此表的主键,索引等.
    还有就是你的ORACLE版本是多少.9i会自动优化查找顺序.低于9i的就需要自己优化了.
      

  3.   

    找到原因了,给area建了一个同名的表,把内容完全复制。然后连接这个表,速度很快。可能是area的索引在导数据库时坏了,谢谢你们呀。这种情况我还是第一次碰到,建的索引也能坏了:(
      

  4.   

    select a.acc_nbr,b.cust_sub_name,c.cust_name,c.vip_flag,d.level_name,e.serv_type_name,
         f.address,g.area_id,g.name,i.param_name,(select area_name from area where area_id=g.area_id) area_name
    from consumer b ,cust c ,cust_level d,serv_type e,address f,exchange g,serv a,param i
     where a.consumer_id=b.consumer_id and b.cust_id=c.cust_id 
     and c.cust_level_id=d.cust_level_id
     and a.serv_type_id=e.serv_type_id(+)
     and a.addr_id=f.addr_id(+)
     and a.exchange_id= g.exchange_id
     and a.status=i.param_id
     and a.acc_nbr='82345987'换成外连接的方式这样写,确保area.area_id有索引