oracle9i,数据量目前在10万左右.
如果我直接用:
select * from table_name ;
这个很快,大约1秒就返回数据到界面了.但是,当有条件查询的时候,比如:
select * from table_name where type="xx";就很慢了,要大约1分钟左右才能返回数据.这才加一个条件就这么慢了,如果我加条件那就更慢了.
请教高手有什么优化的手段?
谢谢!

解决方案 »

  1.   

    select * from table_name ;
    这个很快,大约1秒就返回数据到界面了
    这时因为oracle只返回了前面一部分记录而已,如果要返回所有记录同样会慢但是,当有条件查询的时候,比如: 
    select * from table_name where type="xx";就很慢了,要大约1分钟左右才能返回数据. 
    建议对type列建立索引
      

  2.   

    对type列建立索引,
    如果还是慢,执行计划也帖出来
      

  3.   

    1: TYPE列建索引。
    2:统计表table_name信息。
    3:如果还不行,贴执行计划吧。
      

  4.   

    先建立索引 这是根本的解决办法,要是索引不好用就优化一下 where条件   尽量不要用 not null   或null  什么的 要不索引就废了,  where  条件尽量 把筛选幅度比较大的写在右边,优化一下  多换几种where的方法  试一下
      

  5.   


    楼主出手大方, 赞一个如果type上没有索引, 这两个语句应该都是全表扫描, 
    从返回的记录数上来说, 语句1执行所花费的时间可能更多(也有可能少), 因为它返回整个表楼主所看到的马上返回数据的过程, 和需要一分钟才有返回的区别, 打个比方, 比如货车卸货:
    如果所有的货都需要卸, 工人来了直接搬就可以了,
    而如果只想卸type='xxx'的货, 那么先要挑选, 然后才能搬所以楼主看到记录的时间有区别, 这个区别就是挑选花费的时间要有明确的解决方案, 如楼上大侠们所言, 需要搜集统计信息和查看执行计划
      

  6.   

    再请教一个问题。如果优化使用 like 来进行模糊查询的语句呢?
    我尝试过建立索引,使用系统函数instr代替,全文检索,效果都没我想象中那样好。不知道各位兄弟姐妹还有其他的什么方法优化吗?
      

  7.   

    用like还是需要去查找的,同样浪费时间