【Oracle sql优化必知——表的访问】教程文章相关的互联网学习教程文章

ORACLE常用SQL优化hint语句

1. /*+ALL_ROWS*/表明对语句块选择基于开销的优化方法,并获得最佳吞吐量,使资源消耗最小化.例如:SELECT /*+ALL+_ROWS*/ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO=’SCOTT’;2. /*+FIRST_ROWS*/表明对语句块选择基于开销的优化方法,并获得最佳响应时间,使资源消耗最小化.例如:SELECT /*+FIRST_ROWS*/ EMP_NO,EMP_NAM,DAT_IN FROM BSEMPMS WHERE EMP_NO=’SCOTT’;3. /*+CHOOSE*/表明如果数据字典中有访问表的统计信息,将基...

好记性不如烂笔头之Oracle SQL优化(2)

*sql优化基于oracle11gR2读书笔记* 三、Oracle里的Cursor Oracle中的Cursor是Oracle数据库中SQL解析和执行的载体,是c语言的一种数据结构(oracle是用c写的)。 Oracle数据库中的Cursor分为两种:一种是Shared Cursor,另外一种是Session Cursor。 1、Shared Cursor 先来了解一下什么是库缓存、库缓存对象。 我们知道Oracle中有一个全局内存区域SGA,而SGA又可以分为java池、大池、共享池、空池等等。而...

Sql优化(三) 关于oracle的并发

。但也有例外例如计费系统月底或下班后没有或用户很少访问,运行批处理程序,此时可使用并发提高速度 2)数据仓库系统 通常可使用并发查询、PDML等并发,注意有些数据仓库系统也提供给大量用户访问,这种系统有某些OLTP特性,应慎用并发 3)无论是OLTP还是数据仓库,维护期间使用parallel ddl和PDML对管理员来说是非常有用的 三、 Parallel query使用并发查询的方法: 1)修改表属性Alter table big_table parallel 4;Altertabl...

oracle+SQL优化实例

1. 减少I/O操作: SELECT COUNT(CASE WHEN empno>20 THEN 1 END) c1,COUNT(CASE WHEN empno<20 THEN 1 END) c2 FROM emp; 2. 通过rowid访问 SELECT ROWID,emp.* FROM emp WHERE ROWID=chartorowid(‘AAAHW7AABAAAMUiAAA‘) 3. 使用索引唯一扫描 SELECT empno,ename FROM emp WHERE empno=‘2000‘ 4. 使用并连接符号会使oracle忽略使用索用,即使是唯一索引 SELECT empno,ename FROM emp WHERE empno||ename=‘2000naem‘...

sql优化(oracle)【代码】【图】

3. 绑定变量      3. with as4. 数据表访问方式          4. order by5. sql 执行顺序           5. group by6. 索引使用             6. where 和 having 7. case when 和 decode 知识准备 1. sql执行过程 1)执行过程当一个oracle实例接收到一条sql后,执行过程如下:1) create a cursor 创建游标2) parse the statement 分析语句3) describe results of...

Oracle Sql优化一例---利用函数索引

and sys_id=‘STM06‘; 查看执行计划发现查询利用了索引,索引中包含了batch_status字段,但是通过以下sql查询: select batch_status,count(*) from t_batch_info group by BATCH_STATUS 发现batch_status字段的值很少: batch_status count(*) 0   40350 1   42373572   12273   433515 之前sql的查询条件是batch_status=‘0‘,它只有4万多条数据,而绝大部分都是1,有400多万条数据,因此虽然用到了索引,但是使用效率低...

oracle sql优化技巧

数据库方面一直是自己的薄弱项,现在以本文慢慢积累总结oracle sql优化的一些技巧。 1.首先大家很容易想到的一切优化技巧--索引,索引有啥用?索引在表数据量很大时添加索引确实能加快查询速度,通过索引查询能很好地避免全表扫描。 但应该也要注意的时这是在数据量较大的时候。同时数据较小时,反而浪费索引空间。另外,添加索引之后数据的插入,更新反而会变慢,在插入或修改记录时需要新建索引并排序。 索引创建语句: ...

oracle11g中SQL优化(SQL TUNING)新特性之SQL Plan Management(SPM)【代码】

AttributeDescriptionSQL_HANDLEA unique SQL identifier in string form; it can be used as a search keyPLAN_NAMEA unique SQL plan identifier in string form; it can be used as a search keySQL_TEXTThe SQL statement’s unnormalized, actual textORIGINTells if the SQL Plan was either:AUTO-CAPTURE: Automatically captured MANUAL-LOAD: Manually evolved MANUAL-SQLTUNE: Automatically evolved by SQL Tuning Advi...

sql优化(oracle)- 第一部分 知识准备【图】

第一部分 知识准备     1. sql执行过程                2. sql 共享                  3. 绑定变量       4. 数据表访问方式              5. sql 执行顺序               6. 索引使用                          ...

sql优化(oracle)- 第三部分 &#160;sql优化总结

4)or比较多时分为多个查询,使用union all(尽量用union all代替union)联结(适应于索引列)  5) 尽量多用commit提交事务,可以及时释放资源、解锁、释放日志  6)访问频繁的表可以放置在内存中  7)避免复杂的多表关联  8)避免distinct,union(并集),minus(差集),intersect(交集),order by等耗费资源的操作,因为会执行耗费资源的排序功能  9)使用exists替代distinct   select c.distinct c.classname, c.cl...

sql优化(oracle)- 第二部分 常用sql用法和注意事项【图】

1)说明:  1. exists先对外表做循环,每次循环对内表查询;in将内表和外表做hash连接  2. 使用exists oracle会先检查主查询; 使用in,首先执行子查询,并将结果存储在临时表中 1. 使用exists和not exists select name, classno from student where exists (select * from class where student.classno= class.classno);   select name, classno from student where not exists (select * from class where student.classno...

Oracle_sql优化基础——优化器总结

优化器是Oracle数据库中内置的一个核心子系统,优化器的目的就是按照一定的判断原则来得到它认为目标sql在当前情形下最高效的执行路径,也就是说是为了得到目标sql的执行计划。 Oracle数据库的优化器分为:RBO和CBO两种类型: RBO:基于规则的优化器(在得到sql执行计划时,RBO所用的判断原则为一组内置的规则) CBO:基于成本的优化器(在得到sql执行计划时,CBO所用的判断原则为成本,它会从目标sql诸多可能的执行路线中选...

Oracle sql优化必知——表的访问

访问表中的数据有两种:1、直接访问表 2、先访问索引,再回表1、直接访问表的两种方法:①、全表扫描 全表扫描是指Oracle在访问目标表的数据时,会从该表所占用的第一个区(extent)的第一个块(block)开始扫描,一直扫描到该表的高水位线,这段范围内的所有数据库都必须读到,当然如果目标sql的where中指定的过滤条件,最后只返回满足条件的数据即可;(有时候全表扫描的效率还是非常高的,但是随着表的数据增多 资源消耗也...

Oracle 建立索引及SQL优化

Oracle 建立索引及SQL优化数据库索引: 索引有单列索引 复合索引之说如何某表的某个字段有主键约束和唯一性约束,则Oracle 则会自动在相应的约束列上建议唯一索引。数据库索引主要进行提高访问速度。 建设原则:1、索引应该经常建在Where 子句经常用到的列上。如果某个大表经常使用某个字段进行查询,并且检索行数小于总表行数的5%。则应该考虑。2、对于两表连接的字段,应该建立索引。如果经常在某表的一个字段进行Order By 则也经过...

ORACLE SQL优化之ORA-03150&ORA-02055&ORA-02063【图】

今天,一实施同事反应,他执行一存储过程,执行到一条含有dblink的insert into select语句时报错:ORA-03150 ORA-02055 ORA-02063,具体报错如图所示:该报错涉及的SQL语句是:insert into yhjkb@dblink_jkb select oae001, akb020, akc190, akc220, aae072, akc515, aka135, aae100, akc301, b.reject_money, b.reject_reson, b.oper_...