一个100万条记录表,目前查询速度过慢,让你给出5条优化措施??
面试的题目,请大家帮忙顶

解决方案 »

  1.   

    优化没有具体公式,只能根据具体情况来看,比如:取得记录数,记录数的字段是否可索引,条件是否可索引,是否存在查询关联等.当然可以从这几方面考虑:
    1、减少碎片,重组表(导出导入可以解决);
    2、为使查询走基于代价的优化器,需要分析表;
    3、检查查询语句是否可索引,因为不是所有的字段索引化就会明显改善查询速度,这要看具体情况;
    4、在有索引的情况下检查索引是否能被引用到;如果不能被引用到,可以考虑新建索引;
    5、重建索引(rebuild)、分析索引等;
    6、根据查询计划去分析当前的查询语句。另外,在查询语句写的不是太糟糕的情况下,100万数据表一般可以通过建立合理的索引使查询更高效。
      

  2.   

    优化sql语句最终的效果一定要看执行计划。
      

  3.   

    1如果有可能的话采用分区的方法,按年月或者地区将表拆分成多个小表,之后进行查询2优化索引3采用存储过程执行,因为已经在数据库上编译过,能相对快点4,优化程序,java里面有批量处理一批相同类型sql的方法基本上应该够了吧
      

  4.   

    SGA的配置不当会引起数据库整体性能问题,人家问的是100万数据表的优化.
      

  5.   

    才100w的数据 全部做全表搜索也不会慢
    足够sga 和临时表空间 足够了。
    实在不行 ,可以建下索引 和使用分区表,感觉大材小用。面试题才出100w的记录的题........晕
      

  6.   

    要是我首先会检查表的hwm
    然后检查freelist
    当然了.如果是9i或者以上版本.我还会检查表和索引是否作过分析.
    以及考虑是否需要做柱状图.
    分区当然不可能是这么容易就让你做的.
    因为这个需要涉及到与用户交涉.当然内存参数肯定要设置到正常的.当然索引是需要考虑的啦.建什么索引比较合适.哪些索引需要分析或者重建或者合并等等.
      

  7.   

    100万条根本就不多,查询缓慢我看主要还是SQL语句需要优化,
    另外如果该表不是经常UPdate之类的,需要建索引
      

  8.   

    1.增加CPU和内存.2.适当加大SGA3.检查出bad SQL,也就是执行效率非常低下的,改写.4.重新看执行计划, 根据执行计划确定下一步.5. 根据上一步的情况定.