数据库索引:索引有单列索引,复合索引之说,如果某表的某个字段有主键约束和唯一性约束,则Oracle 则会自动在相应的约束列上建议唯一索引。数据库索引主要进行提高访问速度。建设原则: 1、索引应该经常建在where 子句经常用到的列上。如果某个大表经常使用某个字段进行查询,并且检索行数小于总表行数的5%。则应该考虑。 2、对于两表连接的字段,应该建立索引。如果经常在某表的一个字段进行order By 则也经过进行索引。 3、不应...
oracle优化一般分为:1、sql优化(现在oracle都会根据sql语句先进行必要的优化处理,这种应该用户不大了,但是像关联和嵌套查询肯定是和影响性能的) A、oracle的sql语句的条件是从右往左执行的,如下语句:select * from t_user where nation=‘回族‘ and age > 20.oracle首先是查询年龄大于20岁的,再查询民族为回族的,最后汇总两次得到的结果。 B、根据A中说的sql语句执行特点,上面的语句是可以进行优化的。A中的sql语句...
table1 f
set f.ljjine1= (select nvl(sum(nvl(b.jine1,0)),0) from table1 b where b.kjqj<=f.kjqj and b.gs=f.gs and b.bm=f.bm and b.yw=f.yw and b.currency=f.currency and substr(b.kjqj,1,4)=substr(f.kjqj,1,4)),
f.jine2 = (select nvl(sum(nvl(e.jine1,0)),0) from table2 e where e.kjqj=f.kjqj=e.gs=f.gs and e.bm=f.bm and e.yw= f.yw),
f.ljjine2 = (select nvl(sum(nvl(e.jine1,0)),0) from table2 e wher...
收到开发提交的一条SQL,在高并发下较慢,看能否做一些优化:
该SQL是1个表对另一个表做Left join,首先执行下看看,
SQL> select l.vcno,opttype,add_points,optdate,remark,memid,id,FAMILYID,create_Username,billno,billtype,billsubcase,reduce_Points, l.addnum,addpresentum,reducenum,reducepresentnum
2 from HQ_07310066.m_mempoint_logs l left join HQ_07310066.m_memdetail m on l.vcno = m.vcno where 1=1 AND ...
两个SCHEMA,开发反馈数据量相差无几,但一模一样的SQL,A Schema要跑6分钟,B Schema只5秒就出来了。SQL语句如下:
SELECT *
FROM (SELECT A.*, ROWNUM RN
FROM (select t3.check_show,
t1.*,
t2.storesid,
to_char(rdate, ‘yyyy-mm-dd‘) as to_rdate,
to_char(submitdate, ‘yyyy-mm-dd‘) as to_submitdate,
...
今天在优化一段sql,原脚本大致如下:select a.字段n from tab_a awherea.字段2 is not null;a.字段2增加了索引的,但是查询速度非常慢,于是做了如下修改:select a.字段n from tab_a awherenvl(a.字段2,‘0‘ ) != ‘0‘;速度提升很明显。原因是什么呢?其实很简单,因为is null和is not null使字段的索引失效了。虽然都知道哪些情形下会使索引失效,但是有时难免受业务需求的影响而考虑的不够全面,所以sql优化要时刻进行,随...
原文: http://mp.weixin.qq.com/s?__biz=MjM5MDQ2NjYzNQ==&mid=402384913&idx=1&sn=b6fdb2b031c4d8cabe081f766ce5558f&scene=2&srcid=1120uVApTGzY8sJkAHTeqBc7&from=timeline&isappinstalled=0#wechat_redirect
看了此文,Oracle SQL优化文章不必再看(转)标签:本文系统来源:http://www.cnblogs.com/iamcui/p/4979834.html
专家简介丁俊
网名:dingjun123
DBA+社群联合发起人
性能优化专家,Oracle ACEA,ITPUB开发版资深版主。8年电信行业从业经验,在某大型电信系统提供商工作7年,任资深工程师,从事过系统开发与维护、业务架构和数据分析、系统优化等工作。擅长基于ORACLE的系统优化,精通SQL、PL/SQL、JAVA等。电子工业出版社终身荣誉作者,《剑破冰山-Oracle开发艺术》副主编。
目录SQL优化的本质SQL优化Road Map
2.1 制定SQL优化目标
2.2 检...
本文系统来源:https://oracle-base.com/articles/misc/efficient-function-calls-from-sql
where hsje>5000
and dzxl = ‘000001’
and 25<(select count(*) from report_sale_account
where code=e.code);
高效:select * from report_sale_account e
where 25<(select count (*)
from report_sale_account
where code=e.code)
and hsje>5000
and dzxl = ‘000001’;
SQL的优化技巧 (2)
删除全表时,用truncate 替代 delete,同时注意truncate只能在删除全表时适用,因为truncate是ddl而不是dml。
例如删除掉一...
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*/表明如果数据字典中有访问表的统计信息,将基...
*sql优化基于oracle11gR2读书笔记*
三、Oracle里的Cursor
Oracle中的Cursor是Oracle数据库中SQL解析和执行的载体,是c语言的一种数据结构(oracle是用c写的)。
Oracle数据库中的Cursor分为两种:一种是Shared Cursor,另外一种是Session Cursor。
1、Shared Cursor
先来了解一下什么是库缓存、库缓存对象。
我们知道Oracle中有一个全局内存区域SGA,而SGA又可以分为java池、大池、共享池、空池等等。而...
。但也有例外例如计费系统月底或下班后没有或用户很少访问,运行批处理程序,此时可使用并发提高速度 2)数据仓库系统 通常可使用并发查询、PDML等并发,注意有些数据仓库系统也提供给大量用户访问,这种系统有某些OLTP特性,应慎用并发 3)无论是OLTP还是数据仓库,维护期间使用parallel ddl和PDML对管理员来说是非常有用的
三、 Parallel query使用并发查询的方法: 1)修改表属性Alter table big_table parallel 4;Altertabl...
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‘...
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...