资讯专栏INFORMATION COLUMN

Oracle数据库优化

Lycheeee / 2782人阅读

摘要:封转数据库字段表回滚封装字段的查询执行过程,检查安全性,确保数据执行者有权限执行,检查语法,可能发生的查询重新书写,执行创建执行计划生产器接受经过解析的捆绑执行计划执行执行计划读取结果记录排序结果集执行级别数据访问方式,全表扫描顺序读取,知

封转数据库字段

varray 表

CREATE OR REPLACE TYPE EMPLOYER_NAME AS OBJECT
(
  E_NAME VARCHAR(40)
)
;

CREATE OR REPLACE TYPE PRIOR_EMPLOYER_NAME_ARR AS VARRAY(10) OF EMPLOYER_NAME;

CREATE OR REPLACE TYPE FULL_MAILLING_ADRESS_TYPE AS OBJECT(STREET VARCHAR2(80), CITY VARCHAR2(80), STATE CHAR(2), ZIP VARCHAR2(10));

CREATE OR REPLACE TYPE EMPLOYEE AS OBJECT(LAST_NAME VARCHAR(40), FULL_ADDRESS FULL_MAILLING_ADRESS_TYPE, PRIOR_EMPLOYERS PRIOR_EMPLOYER_NAME_ARR);

CREATE TABLE EMP OF EMPLOYEE;

INSERT INTO EMP VALUES("Jim", FULL_MAILLING_ADRESS_TYPE("Airplan Ave", "Rocky", "NC", "2343"), PRIOR_EMPLOYER_NAME_ARR(EMPLOYER_NAME("IBM"), EMPLOYER_NAME("APPLE"), EMPLOYER_NAME("CNN")));


回滚

DROP TYPE PRIOR_EMPLOYER_NAME_ARR FORCE;
DROP TYPE FULL_MAILLING_ADRESS_TYPE FORCE;
DROP TYPE EMPLOYEE FORCE;
DROP TYPE EMPLOYER_NAME FORCE;
DROP TABLE EMP;

COMMIT;

封装字段的查询

 SELECT P.LAST_NAME, PRIOR_EMPLOYERS.*
      FROM EMP P, TABLE(P.PRIOR_EMPLOYERS) PRIOR_EMPLOYERS
     WHERE P.LAST_NAME = "Jim";

SQL 执行过程
1,检查安全性,确保sql数据执行者有权限执行
2,检查sql语法
3,可能发生的查询重新书写
4,执行

  1.创建执行计划
  2.生产器接受经过解析的sql
  3.捆绑执行计划 
  4.执行执行计划 
  5.读取结果记录
  6.排序结果集
  

SQL 执行级别

数据访问方式:
1,全表扫描 db_file_multiblock_read_count
顺序读取,知道结尾
1.当表中不存在索引
2.查询中不包含where字句
3.内置函数中的索引无效
4.like操作 %开头
5.使用基于成本优化器 数据量少时
6.当初始化文件中存在optimizer_mode = all_rows

2, 赛列获取

Oracle对单表簇和多表簇进行散列存储,用来在连接操作中减低输入 输出

3,ROWID 访问
通过Rowid访问单条数据最快的方式,在实际的引用中,首先从索引中收集ROWID,然后通过ROWID进行数据读取

索引访问方式
索引都可以看做一组符合主键和ROWID的组合,索引访问的目的是收集对目标快速读取时所需要的ROWID
B树索引,位图索引 基于函数的索引.

索引范围扫描:读取一个或者多个ROWID 索引数值升序排列

eg:select * from table where a = "a";

快速全索引扫描

eg: select distinct color,count(*) from table group by color;

单个索引扫描:读取一个多带带的ROWID
降序索引范围扫描:读取一个或者多个ROWID 索引数值降序排列
AND - EQUALS:

select * from table where a = "a" and b > 34; 

从where字句中收集多个ROWID

连接操作
嵌套循环连接

散列连接

排序合并连接

排序大小 sort_area_size_init.ora 参数
磁盘排序的执行速度要比内存排序的的执行速度慢14000倍

表连接的综合效率比较

sql优化器
目的是为sql语句生成最快 并且好资源最少的执行计划
1,基于规则的优化器

 步骤 
   对于在where子句中的每一个表
   - 生成一个可行的执行计划列表,这个列表中列出所有可以用来访问表的路径
   - 为每一个执行计划指定级别数值
   - 选择级别数值最低的计划
   - 对结果集的选择级别最低 连接方法进行评估
   

2,基于成本的优化器

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/35315.html

相关文章

  • Oracle APEX 系列文章5:在阿里云上打造属于你自己的APEX完整开发环境 (进一步优化)

    摘要:优化删除自带的不必要的文件是有必要的,最大限度保证系统安全。所以我们要对进行必要的修改,让等待数据库启动完毕再启动。 showImg(https://segmentfault.com/img/remote/1460000014711637?w=1010&h=276); 本文是钢哥的Oracle APEX系列文章中的第五篇,完整 Oracle APEX 系列文章如下: Oracle A...

    NervosNetwork 评论0 收藏0
  • Oracle APEX 系列文章5:在阿里云上打造属于你自己的APEX完整开发环境 (进一步优化)

    摘要:优化删除自带的不必要的文件是有必要的,最大限度保证系统安全。所以我们要对进行必要的修改,让等待数据库启动完毕再启动。 showImg(https://segmentfault.com/img/remote/1460000014711637?w=1010&h=276); 本文是钢哥的Oracle APEX系列文章中的第五篇,完整 Oracle APEX 系列文章如下: Oracle A...

    fnngj 评论0 收藏0
  • Oracle APEX 系列文章5:在阿里云上打造属于你自己的APEX完整开发环境 (进一步优化)

    摘要:优化删除自带的不必要的文件是有必要的,最大限度保证系统安全。所以我们要对进行必要的修改,让等待数据库启动完毕再启动。 showImg(https://segmentfault.com/img/remote/1460000014711637?w=1010&h=276); 本文是钢哥的Oracle APEX系列文章中的第五篇,完整 Oracle APEX 系列文章如下: Oracle A...

    BlackHole1 评论0 收藏0
  • Oracle APEX 系列文章5:在阿里云上打造属于你自己的APEX完整开发环境 (进一步优化)

    摘要:优化删除自带的不必要的文件是有必要的,最大限度保证系统安全。所以我们要对进行必要的修改,让等待数据库启动完毕再启动。 showImg(https://segmentfault.com/img/remote/1460000014711637?w=1010&h=276 src=https://static.segmentfault.com/v-5d2ffc9a/global/img/squ...

    coolpail 评论0 收藏0
  • 缓存优化实验报告

    摘要:销售助手缓存优化实验报告问题背景移动销售助手又名外勤通,个别页面访问非常慢,急需优化。结论二对于简单的,无须从优化为缓存。 销售助手-缓存优化实验报告 2015.4.7 by ouyida3 问题背景 移动APP-销售助手(又名外勤通),个别页面访问非常慢,急需优化。 实验环境 Oracle数据库:测试环境32.121.2.132(性能还行,但发现偶尔会有问题) 后台WEB应...

    only_do 评论0 收藏0
  • Oracle SQL性能优化

    摘要:性能优化选择最有效率的表名顺序只在基于规则的优化器中有效的解析器按照从右到左的顺序处理子句中的表名,子句中写在最后的表基础表将被最先处理,在子句中包含多个表的情况下你必须选择记录条数最少的表作为基础表。 Oracle SQL性能优化 (1) 选择最有效率的表名顺序(只在基于规则的优化器中有效): ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中...

    aboutU 评论0 收藏0

发表评论

0条评论

Lycheeee

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<