排序优化
2012-08-15 13:45
323 查看
避免索引:
.创建索引时使用NOSORT子句(在一个单CPU的机器中使用SQL*Loader时,可以在建索引时使用NOSORT子句,这样可以避免对数据进行预先排序。这个子句只对数据插入到表时有效):
SQL> create index EMPLOYEES_DEPARTMENT_ID_FK on employees(department_id) NOSORT;
ORA-01409: NOSORT option may not be used; rows are not in ascending order
在一个多CPU的机器中,并行加载数据可能更快,即使加载的数据不整齐。然后能够 使用并行索引创建来提高排序。
.使用UNION ALL代替UNION(使用UNION ALL代替UNION;这个子句不能消除重复,所以 不需要排序)
.Nested Loop Joins(嵌套的循环连接)
使用索引访问对于对等连接请求:
SQL> select department_name, Last_name
from employees e, departments d
where e.department_id = d.department_id;
最优化选择一个嵌套的循环连接代替一个合并排序连接。一个嵌套的循环连接不请求任何的排序。这步需要做下面的操作:
1、在employees表上执行一个全表扫描
2、对于返回的每一行使用DEPARTMENT_ID的值去执行一个唯一扫描在主键索引(departments表的主键)上
3、使用从索引扫描获得的ROWID去定位在departments表中匹配的行
4、把从employees表返回的行跟从departments表中返回的匹配的行合并
.在经常被ORDER BY子句引用的列上建索引(既然索引已经经过升序排序并且是双向链接,服务器使用索引好于一个排序操作。)
.对列进行分析(只对感兴趣的列收集统计;比如,那些相关的的连接条件,
ANALYZE... FOR COLUMNS 或者 ANALYZE...FOR ALL INDEXED COLUMNS.
注意:ANALYZE... SIZE n命令为相关的列建立柱状图。用FOR ALL INDEXED COLUMNS这个子句进行综合,对于主键和唯一键约束来说,可以避免产生不必 要的柱状图)
.ANALYZE ESTIMATE(COMPUTE子句对于最优化来说更精确。但是,它需要一个大的排 序空间。ESTIMATE子句对于大的表和簇表来说更好)
转载【ocp认证】
.创建索引时使用NOSORT子句(在一个单CPU的机器中使用SQL*Loader时,可以在建索引时使用NOSORT子句,这样可以避免对数据进行预先排序。这个子句只对数据插入到表时有效):
SQL> create index EMPLOYEES_DEPARTMENT_ID_FK on employees(department_id) NOSORT;
ORA-01409: NOSORT option may not be used; rows are not in ascending order
在一个多CPU的机器中,并行加载数据可能更快,即使加载的数据不整齐。然后能够 使用并行索引创建来提高排序。
.使用UNION ALL代替UNION(使用UNION ALL代替UNION;这个子句不能消除重复,所以 不需要排序)
.Nested Loop Joins(嵌套的循环连接)
使用索引访问对于对等连接请求:
SQL> select department_name, Last_name
from employees e, departments d
where e.department_id = d.department_id;
最优化选择一个嵌套的循环连接代替一个合并排序连接。一个嵌套的循环连接不请求任何的排序。这步需要做下面的操作:
1、在employees表上执行一个全表扫描
2、对于返回的每一行使用DEPARTMENT_ID的值去执行一个唯一扫描在主键索引(departments表的主键)上
3、使用从索引扫描获得的ROWID去定位在departments表中匹配的行
4、把从employees表返回的行跟从departments表中返回的匹配的行合并
.在经常被ORDER BY子句引用的列上建索引(既然索引已经经过升序排序并且是双向链接,服务器使用索引好于一个排序操作。)
.对列进行分析(只对感兴趣的列收集统计;比如,那些相关的的连接条件,
ANALYZE... FOR COLUMNS 或者 ANALYZE...FOR ALL INDEXED COLUMNS.
注意:ANALYZE... SIZE n命令为相关的列建立柱状图。用FOR ALL INDEXED COLUMNS这个子句进行综合,对于主键和唯一键约束来说,可以避免产生不必 要的柱状图)
.ANALYZE ESTIMATE(COMPUTE子句对于最优化来说更精确。但是,它需要一个大的排 序空间。ESTIMATE子句对于大的表和簇表来说更好)
转载【ocp认证】
相关文章推荐
- java版排序算法简介及冒泡排序以及优化,选择排序,直接插入排序,希尔排序,堆排序,快速排序及其优化前言 2 分类 2 稳定性 3 时间复杂度 4 Java实现版本 5 1、冒泡排序 6 2、选择排序
- codeforces To Add or Not to Add (排序 + 优化)
- 优化洗牌(shuffle)和排序阶段
- mysql 排序方法优化速度
- 【LintCode-463】整数排序(Java实现-冒泡排序优化)
- 优化的归并排序
- 分享javascript实现的冒泡排序代码并优化
- Lucene第二篇【抽取工具类、索引库优化、分词器、高亮、摘要、排序、多条件搜索】
- 一个小项目中的Python中的性能优化细节——(上)从排序说起
- Oracle查询优化--排序
- MySQL如何利用索引优化ORDER BY排序语句
- 数组排序优化——二
- 优化的选择排序和折半查找法
- 【JDK优化】java.util.Arrays的排序研究
- FIRST_ROWS优化模式语言排序模糊匹配问题
- 快速排序的实现与优化
- 排序-快速排序-优化-使用插入排序
- 考研数据结构与算法之排序专题二 冒泡排序及优化
- 排序-冒泡排序最终优化版本
- 【sql查询与优化】2.给查询结果排序