最近遇到一个很郁闷的问题,我查一张特别常用的表,该表的数据量是百万量级的,之前select * from tabname(pl/sql工具)很快,最近特别慢。我表分析也做了,索引也重建了,可是还是很慢,不知道怎么回事?哪位大侠指点一二?

解决方案 »

  1.   

    select * from tabname
    这样查询,是不会用到索引的。
    tabname表有几百万的数据,用的时候,不会全部用吧。
    select * from tabname where rownum < 10 ;
    这样会比较快。
    如果有查询条件,在查询条件上加上索引,就ok了。
    如果查询结果集>全部结果的30%,就没有必要加索引列。
      

  2.   

    pl/sql工具 中执行计划。
    一般pl/sql工具 中不会全部查询出来的,只是返回一小部分,
      

  3.   

    首先没有任何条件的查询,跟你前面所做的那些分析可能没有什么关系
    我觉得如果是因为前几天快,这几天不行,
    那就不是你sql的问题了,而是你的服务器或数据库的问题了,或者有人在操作表
    这个,你可以重启下服务器和数据库再试下。
    同样一个sql语句执行也可能不同的时间,何况你的数据量很大呢
      

  4.   

    hebeishimeng where条件加rownum更慢,不行。
    lxyzxq2008 PL/SQL工具是只返回一小部分,关键是这一小部分都需要很长时间。
      

  5.   

    不过where条件如果有用到索引的查询,是很快的。
    有些表是千万量级的数据,但是select * from tabname时很快就能出来,而这张表就特别慢。但是如果该表where条件有用到索引的,查询是很快的。
    我不知道是不是这表有问题还是数据库服务器有问题
      

  6.   

    achilles12345大侠,这张表的确是频繁进行插入、删除操作,很可能是你说的这种情况,你说的重构是如何操作,之前没有这样做过,谢谢指点!!!
      

  7.   

    别用客气都是技术交流。重构是很普通的东西,你上王搜索“Oracle表重构”会有很多资料的。我也是用的时候才去查,具体记不住,你看看这个http://wenku.baidu.com/view/074b0903e87101f69e319516.html,不过建议你现在实验系统上试试,没有问题后再整理好语句文档,然后再到生产机上试下。
      

  8.   

    好的,谢谢啊,achilles12345!!!
      

  9.   

    不要客气,建议你参照下:http://blog.csdn.net/sdxrh2005/article/details/4183470。一定要仔细写下语句。