表有1千多万条数据,建索引比较慢,想通过以下方式提高效率,不过运行下来花的时间差不多。
alter session set workarea_size_policy=manual;alter session set sort_area_size=536870912;sort_area_size一般设多少为宜。
是不是还有什么参数需要修改。

解决方案 »

  1.   

    效率低不能单靠感觉去修改系统的参数
    你应该先生成一份系统报告,
    具体分析后才可以找到问题的根源,再修改相应的参数
    如你要实现大数量的查询,而又不需要排序,为什么要修改
    sort_area_size呢?
    修改系统参数一般不是针对某一条语句来做的
    而是在高并发的时候对系统优化的手段
    所以,想要提高你对大数量的查询效率,
    第一是建立索引,第二是对表进行分区
    建议第二个
      

  2.   

    看到v$parameter里,sort_area_size=65536,因为不定期要导一次数据,并且重建索引,数据量大的话,建索引时间很长,有时候要1个多小时。
    我知道有人用过改参数,可以提高效率,不过我试验下来,没显著变化。
    请高手回答。alter session set workarea_size_policy=manual; 
    alter session set sort_area_size=536870912; 
    这个也应该是临时性变更的吧。alter session. 应该只在单个session中生效呀。
      

  3.   

    如果你的数据库是在专有模式下运行,那么10g后推荐PGA自动管理。你最好不要去改为手动管理。
    你可以从v$sysstat中看看:
    sorts(memory)和sorts(disk)的值。
    如果sorts(disk)为0,那么你的排序都在内存中进行,这就无需修改任何设置。本来表大了建索引就慢。
    如果不为0,说明你的很多排序等操作都在临时段中进行。那么你可以增大pga_aggregate_target的值,而不是采用手动管理。
      

  4.   

    alter session set sort_area_size=536870912; 
    一个session用不了这么大的内存吗?要加快创建索引的速度,可以试试并行(如果你的机器够好)sql>create index idx_help_seq on help(seq) parallel
      

  5.   

    10g不是修改sort_area_size这人值,这个是保留是为了向下兼容。。是需要修改sga的大小。。你show parameter pga就知道了。。
    一个是静态值,一个是动态值
    sga_max_size,sga_target;
      

  6.   

    楼上的一点都没搞清楚,没看到人家在session 级别设置了workarea_size_policy=manual啊.