表有1千多万条数据,建索引比较慢,想通过以下方式提高效率,不过运行下来花的时间差不多。
alter session set workarea_size_policy=manual;alter session set sort_area_size=536870912;sort_area_size一般设多少为宜。
是不是还有什么参数需要修改。
alter session set workarea_size_policy=manual;alter session set sort_area_size=536870912;sort_area_size一般设多少为宜。
是不是还有什么参数需要修改。
你应该先生成一份系统报告,
具体分析后才可以找到问题的根源,再修改相应的参数
如你要实现大数量的查询,而又不需要排序,为什么要修改
sort_area_size呢?
修改系统参数一般不是针对某一条语句来做的
而是在高并发的时候对系统优化的手段
所以,想要提高你对大数量的查询效率,
第一是建立索引,第二是对表进行分区
建议第二个
我知道有人用过改参数,可以提高效率,不过我试验下来,没显著变化。
请高手回答。alter session set workarea_size_policy=manual;
alter session set sort_area_size=536870912;
这个也应该是临时性变更的吧。alter session. 应该只在单个session中生效呀。
你可以从v$sysstat中看看:
sorts(memory)和sorts(disk)的值。
如果sorts(disk)为0,那么你的排序都在内存中进行,这就无需修改任何设置。本来表大了建索引就慢。
如果不为0,说明你的很多排序等操作都在临时段中进行。那么你可以增大pga_aggregate_target的值,而不是采用手动管理。
一个session用不了这么大的内存吗?要加快创建索引的速度,可以试试并行(如果你的机器够好)sql>create index idx_help_seq on help(seq) parallel
一个是静态值,一个是动态值
sga_max_size,sga_target;