select * from (select serviceid,count(*) sum  from user_log where serviceid!=-1 group by serviceid ) a where rownum<11 order by sum desc

解决方案 »

  1.   

    sql中用到了!=进行比较,将会使索引失效,查询中将会走全表扫描,如果建立了索引并对表进行了分析,将会走基于索引的权标扫描
    对表建立索引并进行分析,适当加大db buffers和sort_area_size的值
      

  2.   

    1,where语句使用索引,即使改索引是定值
    2,serviceid如果是索引的话,请把"!="修改下,‘!=' 将不使用索引. 记住, 索引只能告诉你什么存在于表中, 而不能告诉你什么不存在于表中.