环境:oracle 11g 现有a表与b表通过a01字段关联,要查询出a表的数据在b表没有数据的数据;sql如下selectcount(1) from (select a.*,(selectcount(1) from b where b.a01=a.a01) as flag from a) where flag=0 因为flag是虚拟字段没有走不了索引导致这条sql执行起来特别慢 310W条数据查总数花费2秒左右。 利用not exists优化sql如下selectcount(1) from a wherenotexists(select1from b where a.a01=b.b01) 利用not ex...
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:select id from t where num=03.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。4.应尽...
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 BLOG文档结构图 一.2 前言部分 一.2.1 导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ① 字符串的处理 ② 常用分析函数 ③ 用sql输出九九乘法表 本文如有错误或不完善的地方请大家多多指正,ITPUB留言或QQ皆可,您的批评指正是我写作的最大动力。 一.2.2 实验环境介绍 oracle 11g 一.2.3 相关参考文章链接 前4章的链接参考相关连接...
一.1 相关参考文章链接 前13章的链接参考相关连接: 【书评:Oracle查询优化改写】第一章 http://blog.itpub.net/26736162/viewspace-1652985/ 【书评:Oracle查询优化改写】第二章 http://blog.itpub.net/26736162/viewspace-1654252/ 【书评:Oracle查询优化改写】第三章 http://blog.itpub.net/26736162/viewspace-1660422/ 【书评:Oracle查询优化改写】第四章 http://blog.itpub.net/26736162/viewspace-1661906/ 【书评:O...
一.1 相关参考文章链接 前13章的链接参考相关连接: 【书评:Oracle查询优化改写】第一章 http://blog.itpub.net/26736162/viewspace-1652985/ 【书评:Oracle查询优化改写】第二章 http://blog.itpub.net/26736162/viewspace-1654252/ 【书评:Oracle查询优化改写】第三章 http://blog.itpub.net/26736162/viewspace-1660422/ 【书评:Oracle查询优化改写】第四章 http://blog.itpub.net/26736162/viewspace-1661906/ ...
Oracle自下而上分析顺序WHERE收条,从优化性能的角度。它建议,这些条件将能够过滤掉大量行书写的WHERE在条款结束,
之间的连接条件置于其它WHERE子句之前,即对易排查的条件先做推断处理。这样在过滤掉尽可能多的记录后再进行等值连接,能够提高检索效率。
比如:
SELECT empno, ename, job, sal, dept.deptno, dname
FROM emp, dept
WHERE emp.deptno = dept.deptno AND emp.deptno = 20;
要比下述语句的查询效率高一些:
SELE...
1. 复制表结构但不新增数据:-- 复制表结构但不插入数据
create table emp_new as select * from emp where 1 = 2;
select * from emp_new;2. 利用 with check option,配合视图,可以为插入数据操作做一些限制:-- with check optiom 限制数据的插入
insert into (select empno, deptno, empname, empsalary, empdescfrom empwhere emp.deptno <> dept02-- with check option)
values(emp008, dept02, Ross, 7000, 对行业发展趋势...
,然后再rownum;方法不变:"select * from tabname where rownum<20 order by name"
----------------------------------------------------------------
涉及到大数据量的查询时我们一般不会想要全部查看,而只是想要汇总、根据条件筛选、查询前面几页数据等。鉴于此用上面的解决方案却不能查询从21到40之间的数据,特修改语句如下:select * from
(select s.*,rownum rowN from tabname s order by stuno desc
) m where m.rowN...
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 用来定义转义符,此时可以写‘\\‘代表真正的‘\‘符号
4、order by 1或2等数字 表示按第几列排序...
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:select id from t where num=03.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。4.应尽...
1. 复制表结构但不新增数据:-- 复制表结构但不插入数据
create table emp_new as select * from emp where 1 = 2;
select * from emp_new;2. 利用 with check option,配合视图,能够为插入数据操作做一些限制:-- with check optiom 限制数据的插入
insert into (select empno, deptno, empname, empsalary, empdescfrom empwhere emp.deptno <> dept02-- with check option)
values(emp008, dept02, Ross, 7000, 对行业发展趋势...
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:select id from t where num=03.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。4.应尽...
第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 按多个字段排序 162.3 按子...
一、查看员工所雇员工信息(查询部门号==10并且按照入职时间升序排序。第二种用数字来代替)
二、按多个字段排序(dmpno,deptno,sal,ename,job)
三、按照子串排序(有一种速查方法,就是按照顾客电话号码尾号的顺序记录,这样查询的时候就可以很快缩小查询范围) last_name 名称 phone_number号码 salary 工资
四、translate(expt,from_string,to_string)
五、处理排序空值
六、根据条件取不同列中的值来排序(领导对工资在10...