oracle如何提高大数据group by 的效率

如题所述

设一些参数 或者 调整执行计划,见下面的语句:
-- Script Tested above 10g
-- Create a new temporary segment tablespace specifically for creating the index.
-- CREATE TEMPORARY TABLESPACE tempindex tempfile 'filename' SIZE 20G ;
-- ALTER USER username TEMPORARY TABLESPACE tempindex;

REM PARALLEL_EXECUTION_MESSAGE_SIZE can be increased to improve throughput.
REM but need restart instance,and should be same in RAC environment
REM this doesn't make sense,unless high parallel degree

-- alter system set parallel_execution_message_size=65535 scope=spfile;

alter session set workarea_size_policy=MANUAL;
alter session set workarea_size_policy=MANUAL;

alter session set db_file_multiblock_read_count=512;
alter session set db_file_multiblock_read_count=512;

--In conclusion, in order to have the least amount of direct operations and
--have the maximum possible read/write batches these are the parameters to set:

alter session set events '10351 trace name context forever, level 128';

REM set sort_area_size to 700M or 1.6 * table_size
REM 10g bug need to set sort_area_size twice
REM remember large sort area size doesn't mean better performance
REM sometimes you should reduce below setting,and then sort may benefit from disk sort
REM and attention to avoid PGA swap

alter session set sort_area_size=734003200;
alter session set sort_area_size=734003200;

REM set sort area first,and then set SMRC for parallel slave
REM Setting this parameter can activate our previous setting of sort_area_size
REM and we can have large sort multiblock read counts.

alter session set "_sort_multiblock_read_count"=128;
alter session set "_sort_multiblock_read_count"=128;

alter session enable parallel ddl;
温馨提示:内容为网友见解,仅供参考
第1个回答  2017-07-03
distinct 和group by都需要排序,一样的结果集从执行计划的成本代价来看差距不大,但group by 还涉及到统计,所以应该需要准备工作。所以单纯从等价结果来说,选择distinct比较效率一些。

oracle如何提高大数据group by 的效率
设一些参数 或者 调整执行计划,见下面的语句:-- Script Tested above 10g -- Create a new temporary segment tablespace specifically for creating the index.-- CREATE TEMPORARY TABLESPACE tempindex tempfile 'filename' SIZE 20G ;-- ALTER USER username TEMPORARY TABLESPACE tempindex...

oracle group by 性能优化
(17) 用索引提高效率:索引是表的一个概念部分,用来提高检索数据的效率,ORACLE使用了一个复杂的自平衡B-tree结构. 通常,通过索引查询数据比全表扫描要快. 当ORACLE找出执行查询和Update语句的最佳路径时, ORACLE优化器将使用索引. 同样在联结多个表时使用索引也可以提高效率. 另一个使用索引的好处是,它提供了主键(...

oracle表如何优化
1)索引是表的一个概念部 分,用来提高检索数据的效率,ORACLE使用了一个复杂的自平衡B-tree结构. 通常,通过索引查询数据比全表扫描要快. 当ORACLE找出执行查询和Update语句的最佳路径时, ORACLE优化器将使用索引. 同样在联结多个表时使用索引也可以提高效率.2) 另一个使用索引的好处是,它提供了主键(...

mysql group by 执行原理及千万级别count 查询优化
然而,如果group by列可以利用索引,MySQL会使用内置聚合函数,避免临时表和排序,效率更高。如查询文件夹与用户关联数,通过联合索引对dir_id进行分组,MySQL能边扫描边累加计数,直接返回结果,无需临时表。针对千万级count查询的优化,可以考虑减少数据扫描,如建立专门的统计表,实时更新关联数量,降低查询...

如何优化操作大数据量数据库
●在频繁进行排序或分组(即进行group by或order by操作)的列上建立索引。●在条件表达式中经常用到的不同值较多的列上建立检索,在不同值少的列上不要建立索引。比如在雇员表的“性别”列上只有“男”与“女”两个不同值,因此就无必要建立索引。如果建立索引不但不会提高查询效率,反而会严重降低更新速度。●...

sort group by 和sort group by nosort的区别是什么
①:sort group by在对数据库的操作中,使用的是全表扫描。而 sort group by nosort采用的是索引全扫描 ②:sort group by适合于大数据量操作。而sort group by nosort多用于小数据量操作。③:sort group by在进行操作时,会自动排序。sort group by nosort在进行操作时,会屏蔽掉sort group by...

SQL语句 group by子句后的分组项如果有多个是怎样进行分组的
group by A,Bgroup by A,B这句的意思就是按A分组,当分组后再在分组后再按B分组 本回答由提问者推荐 举报| 答案纠错 | 评论(1) 6 5 唐伯虎来点蚊香 采纳率:32% 擅长: 硬件 常见软件 数据库DB 操作系统\/系统故障 文化\/艺术 其他回答 group by a,b,c 追问 那是先按A分组,然后再在A分组中按...

数据库的多表大数据查询应如何优化?
如何提高Oracle数据库数据查询的命中率 影响命中率的因素有四种:字典表活动、临时段活动、回滚段活动、表扫描, 应用DBA可以对这四种因素进行分析,找出数据库命中率低的症结所在。 1)字典表活动 当一个SQL语句第一次到达Oracle内核时数据库对SQL语句进行分析,包含在查询中的数据字典对象被分解,产生SQL执行路径。如果SQL...

Oracle中如何删除重复数据
不过这种删除执行的效率非常低,对于大数据量来说,可能会将数据库吊死。所以我建议先将查询到的重复的数据插入到一个临时表中,然后对进行删除,这样,执行删除的时候就不用再进行一次查询了。如下: CREATE TABLE 临时表 AS (select 字段1,字段2,count(*) from 表名 group by 字段1,字段2 having ...

cognos怎么处理大数据
可以修改以下参数:ReadCacheSize(可减少用户访问时服务器的磁盘IO。提高访问速度。) pcQueryLogFile(建议生产环境关闭该日志的跟踪,一般默认也是关闭状态)2.4 Cognos content store优化2.4.1优化内容库连接服务内容库最好外配为db2 oracle等数据库,不要用自带的derby.因为项目中的日志信息会非常多,严重影响内容库的效率...

相似回答