UpRight 数据库的查询优化器介绍

yunhai296 2012-09-02 06:25:16
查询优化器(Optimizer)
查询优化器以Schema Object的统计程度,考虑各种数据处理路径,决定何种运行计划最有效率。
查询优化器逻辑上通过下面的阶段运行。
1. 创建处理所给的SQL语句的各种运行计划。
2. 考虑数据分散度的统计信息和表、索引、分区等的特征,计算各运行计划的成本。这里的成本是显示
运行特定运行计划所需的相对时间,优化器根据I/O、CPU、memory等的计算机资源,计算该成本。
3. 比较运行计划的成本,选择成本最小的计划。
查询优化器的主要功能如下。
– 优化目标
用户还可以改变优化器的最终目标,例如可以选择下面两个目标。
区分说明
总处理时间利用ALL_ROWS提示,优化器可以最大缩短获得到最后行的时间。
最初应答时间利用FIRST_ROWS提示,优化器可以最大缩短获得第一个行的时间。
– 查询变形
通过改变查询的形态,可以创建更好的运行计划。在查询变形的示例中,有视图的合并、子查询的展
开、物化视图的使用等。
– 决定数据访问路径
从数据库取出数据的操作可以通过全表扫描、索引扫描、rowid扫描等各种方法进行。每个方法随所
需的数据的量或过滤的形式等各有优缺点,随查询的不同,最合适的访问方式也不同。
– 决定连接处理方式
从多个表取出数据的连接的情况里,优化器需要决定连接的顺序和方法。在多个表之间进行连接时,
连接某个表的顺序,在各个连接里使用重叠循环join、散列join等各种方法中的那种方法对运行的速度
会有很大影响。
– 成本预算
预算各运行计划的成本。通过选择所需谓词(predicate)或使用个执行阶段的数据行数等统计信息来
进行预算,以此为基础来预算个阶段的成本。
...全文
16 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

2,209

社区成员

发帖
与我相关
我的任务
社区描述
其他数据库开发 其他数据库
社区管理员
  • 其他数据库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧