oracle 查询优化改写】的更多相关文章

-----------书籍: oracle 查询优化改写-----------第1个“C###oracle”为登录数据库的用户名,第2个“oracleChange”为登录数据库的密码“oracleChange”为欲登录的数据库名称. /*create tablespace oracleChangedatafile 'F:\devlopment\databases\oracle\oracleChange\oracleChange.def' size 100M --生成数据文件并定义文件大小auto…
一个系列的读书笔记,读的书是有教无类和落落两位老师编写的<Oracle查询优化改写技巧与案例>. 用这个系列的读书笔记来督促自己学习Oracle,同时,对于其中一些内容,希望大家看到以后,可以留下自己的想法.以此交流. 这篇随笔主要记录的是在Oracle查询过程中对数字的使用具体分为九个部分 1.常用聚集函数 select deptno, min(sal) as 最小值, max(sal) as 最大值, sum(sal) as 工资合计, count(sal) as 计数, avg(sal)…
[书评:Oracle查询优化改写]第14章 结尾章 一.1  相关参考文章链接 前13章的链接参考相关连接: [书评:Oracle查询优化改写]第一章 http://blog.itpub.net/26736162/viewspace-1652985/ [书评:Oracle查询优化改写]第二章 http://blog.itpub.net/26736162/viewspace-1654252/ [书评:Oracle查询优化改写]第三章 http://blog.itpub.net/26736162/v…
[书评:Oracle查询优化改写]第五至十三章 一.1  BLOG文档结构图 一.2  前言部分 一.2.1  导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ① 字符串的处理 ② 常用分析函数 ③ 用sql输出九九乘法表 本文如有错误或不完善的地方请大家多多指正,ITPUB留言或QQ皆可,您的批评指正是我写作的最大动力. 一.2.2  实验环境介绍 oracle 11g 一.2.3  相关参考文章链接 前4章的链接参考相关连接:…
[书评:Oracle查询优化改写]第四章 BLOG文档结构图 一.1 导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ① check的特殊用法 ② sql优化中使用merge语句代替update语句(重点) 本文如有错误或不完善的地方请大家多多指正,ITPUB留言或QQ皆可,您的批评指正是我写作的最大动力. 一.2 实验环境介绍 目标库:11.2.0.3  RHEL6.5 一.3 前言 前3章的链接参考相关连接: [书评:Orac…
[书评:Oracle查询优化改写]第三章 BLOG文档结构图       导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ① 隐含参数 _b_tree_bitmap_plans介绍 ② 11g新特性Native Full Outer Join       本文如有错误或不完善的地方请大家多多指正,ITPUB留言或QQ皆可,您的批评指正是我写作的最大动力. 实验环境介绍   oracle:11.2.0.3 .8.1.7.0.0 OS…
[书评:Oracle查询优化改写]第二章 BLOG文档结构图 在上一篇中http://blog.itpub.net/26736162/viewspace-1652985/,我们主要分析了一些单表查询的时候需要注意的内容,今天第二章也很简单,主要是关于排序方面的内容,以下贴出第二章的内容: 第 2 章 给查询结果排序 2.1 以指定的次序返回查询结果 2.2 按多个字段排序 2.3 按子串排序 2.4 TRANSLATE 2.5 按数字和字母混合字符串中的字母排序 2.6 处理排序空值 2.7 根…
第1章单表查询 11.1 查询表中所有的行与列 11.2 从表中检索部分行 21.3 查找空值 31.4 将空值转换为实际值 41.5 查找满足多个条件的行 51.6 从表中检索部分列 61.7 为列取有意义的名称 61.8 在WHERE子句中引用取别名的列 71.9 拼接列 71.10 在SELECT语句中使用条件逻辑 81.11 限制返回的行数 101.12 从表中随机返回n条记录 101.13 模糊查询 12第2章给查询结果排序 142.1 以指定的次序返回查询结果 142.2 按多个字段…
一.给结果集分页 二.重新生成房间号 三.跳过表中n行 四.排列组合去重…
一.定位连续值的范围 二.查找同一组或分区中行之间的差…
一.union all与空字符串 二.组合相关行 三.in .exists.inter join .left join .right join .full join 之间的区别 'inner  join 返回两表相符合的数据 left    join  以左表为主表,左表返回所有的数据,在右表中只返回与左表匹配的数据 right   join 以右表为组表,右表返回所有的数据,在左表只返回与右表匹配的数据 Full    join  该放手均返回所有的数据,但是只有相匹配的数据显示在同一行 四.…
一.查询表中所有的行与列 二.从表中检索部分行 三.查找空值 四.将空值转化为实际值(coalesce) 五.查找满足多个条件的行(查询部门为10中所有的员工.所有得到提成的员工,以及部门20中工资不超过2000美元的员工) 六.从表中检索部分列 七.为列取有意义的名称 八.在where子句中引用取别名的列 九.拼接列 十.在select语句中使用条件逻辑 十一.限制返回行数 十二.从表中随机返回n条记录 十三.模糊查询…
一.查看员工所雇员工信息(查询部门号==10并且按照入职时间升序排序.第二种用数字来代替) 二.按多个字段排序(dmpno,deptno,sal,ename,job) 三.按照子串排序(有一种速查方法,就是按照顾客电话号码尾号的顺序记录,这样查询的时候就可以很快缩小查询范围) last_name 名称 phone_number号码 salary 工资 四.translate(expt,from_string,to_string) 五.处理排序空值 六.根据条件取不同列中的值来排序(领导对工资在1…
1.coalesce (c1,c2,c3,c4,...) 类似于nvl但可以从多个表达式中返回第一个不是null的值 2.要在where条件中引用列的别名,可以再嵌套一层查询 select * from ( select salary gz from person) where gz>100 3.like()函数的通配符除了%号外,还有_代表一个字符,若要在like里表达_符号需转义: like('\_BCD') escape '\' escape 用来定义转义符,此时可以写'\\'代表真正的'…
  注:报文来源:想跌破记忆寻找你 < Oracle 查询优化的基本准则详解 > Oracle 查询优化的基本准则详解 1:在进行多表关联时,多用 Where 语句把单个表的结果集最小化,多用聚合函数汇总结果集后再与其它表做关联,以使结果集数据量最小化 2:在两张表进行关联时,应考虑可否使用右连接.以提高查询速度 3:使用 where 而不是 having where是用于过滤行的,而having是用来过滤组的,因为行被分组后,having 才能过滤组,所以尽量用户 WHERE 过滤 4:使用…
ORACLE有个高速缓冲的概念,这个高速缓冲就是存放执行过的SQL语句,那oracle在执行sql语句的时候要做很多工作,例如解析sql语句,估算索引利用率,绑定变量,读取数据块等等这些操作.假设高速缓冲里已经存储了执行过的sql语句,那就直接匹配执行了,少了步骤,自然就快了,但是经过测试会发现高速缓冲只对简单的表起作用,多表的情况完全没有效果,例如在查询单表的时候那叫一个快,但是假设连接多个表,就龟速了. 最重要一点,ORACLE的高速缓冲是全字符匹配的,什么意思呢,看下面三个select -…
针对Oracle的查询优化 a.避免使用nclob类型字段,可以通过排除此类型的字段,优化查询b.避免对字段进行NULL值判断,如:SELECT * FROM  TABLE WHERE COL IS NULL c.避免查询条件等号左右类型不一致,类型不一致会严重影响执行效率 如:SELECT * FROM TABLE WHERE RelatedDomainId = 1    ;RelatedDomainId为NVARCHARV2类型 改为:SELECT * FROM TABLE WHERE Re…
or可以改写成union 但是要注意,改写成union的时候一定要有一个唯一列参照,不然会少记录,因为union会去重. 可以用的唯一列:唯一索引列,主键列,rowid,rownum(视图里用这个)…
1. 排序合理查询条件 Oracle自下而上分析顺序WHERE收条,从优化性能的角度.它建议,这些条件将能够过滤掉大量行书写的WHERE在条款结束, 之间的连接条件置于其它WHERE子句之前,即对易排查的条件先做推断处理.这样在过滤掉尽可能多的记录后再进行等值连接,能够提高检索效率. 比如: SELECT empno, ename, job, sal, dept.deptno, dname FROM emp, dept WHERE emp.deptno = dept.deptno AND emp…
--1.遍历字符串 --1.1.建立测试视图 CREATE OR REPLACE VIEW V AS SELECT '天天向上' AS 汉字,'TTXS' AS 首拼 FROM DUAL; --要求每个汉字对应相应的首拼字母显示 ) 汉字,SUBSTR(首拼,) 首拼,LEVEL FROM V CONNECT ; /*总结:CONNECT BY是树形查询的一个子句,后面的LEVEL是一个“伪列”,表示树形中的级别层次,通过LEVEL<=?循环?次,就形成?行数据,LEVEL以1为步长递增*/ -…
查询语句pl/sql中用F5优化语句 ORACLE的explain plan工具的作用只有一个,获取语句的执行计划1.语句本身并不执行,ORACLE根据优化器产生理论上的执行计划2.语句的分析结果存放在表PLAN TABLE中 select * from TABLE where NOWTIME >=to_date('20160101','yyyy-mm-dd') and NOWTIME < to_date('20160102','yyyy-mm-dd') 通过截图显示select语句是走索引的…
环境:oracle 11g 现有a表与b表通过a01字段关联,要查询出a表的数据在b表没有数据的数据:sql如下 ) ) 因为flag是虚拟字段没有走不了索引导致这条sql执行起来特别慢 310W条数据查总数花费2秒左右. 利用not exists优化sql如下 ) from b where a.a01=b.b01) 利用not exists走索引,执行花费时间大约为0.2秒…
1.按照子串排序 2.translate…
1.将空值转化为实际值 coalesce  返回第一个不是null的参数 2.查询满足多个条件的行 需要注意,对于多个条件组合,要使用括号,这样在更改维护语句时可以不吸烟再考虑优先级问题,而且可以很容易地借助各种工具找到各组合条件的起止位置 3.为列取有意义的名称 4.在where子句中引入取别名的列 5.拼接列 ·· 6.在select 语句中使用条件逻辑 有时为了更清楚地区返回的信息 工资分档统计人数 7.限制返回行数 因为rownum是依次对数据做标识的,就像上学时候依据考分排名一样,需要…
今天发现自己之前写的一些SQL查询在执行效率方面非常不理想,于是尝试做了些改进. 需求为查询国地税表和税源表中,国税有而税源没有的条目数,之前的查询如下: SELECT COUNT(NAME) FROM(SELECT TAX_INFO_GD.NAME, TAX_INFO.NSR, TAX_INFO_GD.SH_ID, TAX_INFO.SHXYDM, TAX_INFO_GD.SYLX, TAX_INFO_GD.JDXZ, TAX_INFO_GD.STATE GDSTATE FROM TAX_IN…
--插入.更新与删除 --1.插入新纪录 --1.1.建立测试表 DROP TABLE TEST; CREATE TABLE TEST( C1 ) DEFAULT '默认1', C2 ) DEFAULT '默认2', C3 ) DEFAULT '默认3', C4 DATE DEFAULT SYSDATE ); --1.2.增加数据 INSERT INTO TEST(C1,C2,C3) VALUES(DEFAULT,NULL,'手输值'); --1.3.查询 SELECT * FROM TEST;…
--合并结果集 --1.union all UNION ALL--单纯合并 ; --2.union UNION --将重复结果集合并 ; --------------使用命令窗口执行,查看union与or的执行计划 SQL> alter session set "_b_tree_bitmap_plans" = FALSE; SQL or ename='SCOTT'; SQL> select * from table(dbms_xplan.display); SQL UNIO…
--普通排序 SELECT * FROM emp ORDER BY sal DESC; --使用列序排序 DESC; --组合排序 DESC; --translate函数,参数分别用A.B.C表示 SELECT ename,translate(ename,'LE','el') FROM emp;--当C=B时,相当于单字符一一对应替换同位置替换,即L-->e,E-->l,范围是整个A SELECT ename,translate(ename,'LE','ada') FROM emp;--当C&…
--查询所有 select * from emp; select * from emp where comm is null; --错误表达 --select * from emp where comm = null; --其他有关null的返回结果 select replace('abcde','a',null) as str from dual; ,null) from dual; /*结论:遇到null最好先测试一下,不能臆想猜测*/ --coalesce函数 ) FROM emp; --…