Oracle里面关于排序的优化
2014-03-10 09:06
211 查看
Oracle里面关于排序的优化,只有两种策略:
一种就是尽量将需要排序的数据装载到内存(PGA区域)中,减少磁盘I/O次数。
另一种就是能不排序就不排序。除了order by语句一定排序外,distinct、union等操作会隐含进行排序。Distinct是需要先排序相关字段,然后去掉重复记录。而union和union all的区别是,前者的结果集也需要去掉两个查询语句的重复记录,所以需要排序。后者的结果集市所有记录,包括重复记录,所以不需要排序。
oracle对group by采用的是hashgroup by算法,该算法不保证结果集排序。可以通过内部参数来设置group by算法:
_gby_hash_aggregation_enabled=false或者设置optimizer_features_enabled=9.2.0
适合于大批量数据处理的连接技术只有两种:
1. 排序合并连接(Sort/Merge)技术
两个表先按连接字段进行排序,再将两个表的排序结果进行顺序匹配,将合并结果返回给客户。
2. 哈希连接(HASH)技术
A hash join isexecuted as follows:
Both tables aresplit into as many partitions as required, using a full table scan.
For eachpartition pair, a hash table is built in memory on the smallest partition.
The otherpartition is used to probe the hash table.
两种技术都适合于大表与大表的查询,而且通常情况下,HASH优于Merge,更优于嵌套循环(Nested_Loop)连接技术,尤其是当HASH与Oracle并行处理技术相结合的情况下,将极大地提高系统的整体吞吐量。
一种就是尽量将需要排序的数据装载到内存(PGA区域)中,减少磁盘I/O次数。
另一种就是能不排序就不排序。除了order by语句一定排序外,distinct、union等操作会隐含进行排序。Distinct是需要先排序相关字段,然后去掉重复记录。而union和union all的区别是,前者的结果集也需要去掉两个查询语句的重复记录,所以需要排序。后者的结果集市所有记录,包括重复记录,所以不需要排序。
oracle对group by采用的是hashgroup by算法,该算法不保证结果集排序。可以通过内部参数来设置group by算法:
_gby_hash_aggregation_enabled=false或者设置optimizer_features_enabled=9.2.0
适合于大批量数据处理的连接技术只有两种:
1. 排序合并连接(Sort/Merge)技术
两个表先按连接字段进行排序,再将两个表的排序结果进行顺序匹配,将合并结果返回给客户。
2. 哈希连接(HASH)技术
A hash join isexecuted as follows:
Both tables aresplit into as many partitions as required, using a full table scan.
For eachpartition pair, a hash table is built in memory on the smallest partition.
The otherpartition is used to probe the hash table.
两种技术都适合于大表与大表的查询,而且通常情况下,HASH优于Merge,更优于嵌套循环(Nested_Loop)连接技术,尤其是当HASH与Oracle并行处理技术相结合的情况下,将极大地提高系统的整体吞吐量。
相关文章推荐
- 关于Oracle 大数据排序问题的优化之一
- 关于一个类里面两部分重复的代码怎么优化
- 关于Oracle的优化
- 关于ORACLE 分组后排序 取前几名的…
- 关于Oracle中排序后取前几行的问题
- 关于oracle游标的使用优化
- 关于oracle优化的几点经验
- Oracle优化查询改写(第二章-给查询结果排序)
- 关于oracle性能优化的方法
- 应邀做这样一个讲座 , 关于MS SQLServer \ Oracle中应用优化的诸要素和实施, 大家看
- oracle优化关于索引的
- 关于Oracle SQL性能优化
- Oracle查询优化-02给查询结果排序
- 关于oracle优化的策略等SQL
- oracle order by 排序优化
- 关于oracle优化实战
- Sql优化(三) 关于oracle的并发
- 关于Oracle里面lpad和rpad的使用
- oracle数据库的优化-关于rownum操作
- 关于Oracle优化策略