Oracle查询优化--排序

 1 --普通排序
 2 SELECT * FROM emp ORDER BY sal DESC;
 3 --使用列序排序
 4 SELECT * FROM emp ORDER BY 6 DESC;
 5 --组合排序
 6 SELECT * FROM emp ORDER BY deptno ASC,1 DESC;
 7 --translate函数,参数分别用A、B、C表示
 8 SELECT ename,translate(ename,‘LE‘,‘el‘) FROM emp;--当C=B时,相当于单字符一一对应替换同位置替换,即L-->e,E-->l,范围是整个A
 9 SELECT ename,translate(ename,‘LE‘,‘ada‘) FROM emp;--当C>B时,多余字符无效,等长部分替换效果同第8行
10 SELECT ename,translate(ename,‘LE‘,‘a‘) FROM emp;--当C<B时,多余字符被删除,登场部分替换效果同第8行
11 SELECT ename,translate(ename,‘RNER‘,‘abcd‘) FROM emp;--替换位置为从左至右,因此第二个R对应的d不能发挥作用,因为到此处的判断时,A中的R均已被替换为a了
12 SELECT * FROM (SELECT ename,translate(ename,‘LE‘,‘‘) a FROM emp)WHERE a IS NULL;--如果条件为a=‘‘,则无结果集
13 SELECT ename,translate(ename,‘LE‘,null) FROM emp;--当C为null或‘‘时,返回值为null而不是‘‘
14 --translate 可以用来删除一些无用信息,比如名字中有数字一般是不会发生的,如果有,可以使用以下语句剔除
15 SELECT translate(ename,‘-1234567890‘,‘-‘) FROM emp;--参考第三条基本用法,此语句作用是去除数字
16 --处理空值排序NULLS FIRST/NULLS LAST
17 SELECT * FROM emp ORDER BY comm;
18 SELECT * FROM emp ORDER BY comm NULLS FIRST;
19 SELECT * FROM emp ORDER BY comm NULLS LAST;--可见系统默认是NULLS LAST
20 --根据条件排序case when
21 SELECT empno AS 编号,ename AS 姓名,
22 CASE WHEN sal >=1000 AND sal<=2000 THEN 1
23 ELSE 2 END AS 级别 ,
24 sal AS 工资
25 FROM emp
26 WHERE deptno=30
27 ORDER BY 3,4;
28 --case when语句只涉及条件判断,可以放在order by子句中
29 SELECT empno AS 编号,ename AS 姓名,
30 sal AS 工资
31 FROM emp
32 WHERE deptno=30
33 ORDER BY CASE WHEN sal >=1000 AND sal<=2000 THEN 1
34 ELSE 2 END,3;
时间: 2024-10-11 17:35:43

Oracle查询优化--排序的相关文章

oracle 查询优化改写

-----------书籍: oracle 查询优化改写-----------第1个“C###oracle”为登录数据库的用户名,第2个“oracleChange”为登录数据库的密码“oracleChange”为欲登录的数据库名称. /*create tablespace oracleChangedatafile 'F:\devlopment\databases\oracle\oracleChange\oracleChange.def' size 100M --生成数据文件并定义文件大小auto

【书评:Oracle查询优化改写】第五至十三章

[书评:Oracle查询优化改写]第五至十三章 一.1  BLOG文档结构图 一.2  前言部分 一.2.1  导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ① 字符串的处理 ② 常用分析函数 ③ 用sql输出九九乘法表 本文如有错误或不完善的地方请大家多多指正,ITPUB留言或QQ皆可,您的批评指正是我写作的最大动力. 一.2.2  实验环境介绍 oracle 11g 一.2.3  相关参考文章链接 前4章的链接参考相关连接:

【书评:Oracle查询优化改写】第二章

[书评: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 根

【书评:Oracle查询优化改写】第三章

BLOG文档结构图 一.1 导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ① 隐含参数 _b_tree_bitmap_plans介绍 ② 11g新特性Native Full Outer Join 本文如有错误或不完善的地方请大家多多指正,ITPUB留言或QQ皆可,您的批评指正是我写作的最大动力. 一.2 实验环境介绍 oracle:11.2.0.3  .8.1.7.0.0 OS: RHEL6.5 一.3 前言 前2章的链接参考相

【书评:Oracle查询优化改写】第14章 结尾章

[书评: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查询优化改写】第四章

[书评:Oracle查询优化改写]第四章 BLOG文档结构图 一.1 导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ① check的特殊用法 ② sql优化中使用merge语句代替update语句(重点) 本文如有错误或不完善的地方请大家多多指正,ITPUB留言或QQ皆可,您的批评指正是我写作的最大动力. 一.2 实验环境介绍 目标库:11.2.0.3  RHEL6.5 一.3 前言 前3章的链接参考相关连接: [书评:Orac

Oracle查询优化改写--------------------给查询结果排序

一.查看员工所雇员工信息(查询部门号==10并且按照入职时间升序排序.第二种用数字来代替) 二.按多个字段排序(dmpno,deptno,sal,ename,job) 三.按照子串排序(有一种速查方法,就是按照顾客电话号码尾号的顺序记录,这样查询的时候就可以很快缩小查询范围) last_name 名称 phone_number号码 salary 工资 四.translate(expt,from_string,to_string) 五.处理排序空值 六.根据条件取不同列中的值来排序(领导对工资在1

oracle查询优化

1. 排序合理查询条件 Oracle自下而上分析顺序WHERE收条,从优化性能的角度.它建议,这些条件将能够过滤掉大量行书写的WHERE在条款结束, 之间的连接条件置于其它WHERE子句之前,即对易排查的条件先做推断处理.这样在过滤掉尽可能多的记录后再进行等值连接,能够提高检索效率. 比如: SELECT empno, ename, job, sal, dept.deptno, dname FROM emp, dept WHERE emp.deptno = dept.deptno AND emp

oracle sql 排序与比较中的技巧与注意事项(一)

在sql排序中,oracle默认采用二进制的排序方法.大小写有不同的值,大写的值排在前面.有时候,我们需要处理的情况是,希望忽略大小写来进行排序.有多种方法可以实现: 设置NLS环境变量 alter session set NLS_SORT = 'BINARY_CI'; 使用UPPER和LOWER函数 用UPPER函数和LOWER函数把要比较的字段名.文字都转换成大写或者小写后再比较.这种方法的不足之处在于,使用函数后,标准的索引就不能再使用了,优化器无法正常工作,应对的方式是使用基于功能的索引