求教oracle数据库的一些语句

求教oracle数据库的一些语句,第1张

--先按sal排序,然后取第1条

SELECT  FROM (SELECT  FROM EMP T ORDER BY TSAL DESC) WHERE ROWNUM = 1

这些语句放在一起执行,看得出来目的是要将临时表空间temp对应的文件缩小,比如temp对应的临时文件F:\temp01dbf原有32G,现在想回收一些空间,就可以用这一套命令。

以下是每句的详解:

create temporary tablespace TEMP2 TEMPFILE 'F:\temp02dbf' SIZE 512M REUSE AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED

创建临时表空间TEMP2,临时文件位置和名称是F:\temp02dbf,大小是512M,如果该位置已经有同名文件则重用该文件,临时文件自动扩展,每次自动扩展增加640K,最大大小无限制(实际上有个理论上限是4M个block,对于8k的block大小,这个理论上限是32G)

/

alter database default temporary tablespace temp2

数据库的默认临时表控制设成temp2

/

drop tablespace temp including contents and datafiles

删除临时表空间temp,一并删除主机中该表空间对应的文件

/

create temporary tablespace TEMP TEMPFILE 'F:\temp01dbf' SIZE 512M REUSE AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED

创建临时表空间TEMP,临时文件位置和名称是F:\temp01dbf,大小是512M,如果该位置已经有同名文件则重用该文件,临时文件自动扩展,每次自动扩展增加640K,最大大小无限制(实际上有个理论上限是4M个block,对于8k的block大小,这个理论上限是32G)

/

alter database default temporary tablespace temp

将数据库的默认临时表控制设成temp

/

drop tablespace temp2 including contents and datafiles

删除临时表空间temp2,一并删除主机中该表空间对应的文件

/

DML *** 作(insert

,

delete

,

update)之后,一定要使用commit或rollback命令来结束该事务,否则直接关闭SQL

Plus,数据库默认rollback之前未提交的事务,所以今天你在select的时候

会显示未选定行。

而手动输入commit,rollback

这类的命令,是显示的提交事务(完成事务)。

如果在DML *** 作之后未及时显示的提交,而是又进行了DDL *** 作(create

alter),则数据库会隐式的提交之前未完成的事务。

所以

下次一定要注意哦~~

result 字段可以用视图来处理。

insert into t(userID, chn, eng)

Select userID, (case subject when 'chn' then score else 0 end) as chn,

(case subject when 'eng' then score else 0 end) as eng

from t_score

偶也是菜鸟,不知道这样符合要求不。。。

select from table where rownum < 5;

(可以分下组,排下序)查前面0-4条记录,千万注意 rownum 只能用< <=判断,用> >=的话可能出现不可预知的记录;

查5-9个

select from table order by id where rownum <10

minus

select from table order by id where rownum <5;

查10-14个话

select from table order by id where rownum <15

minus

select from table order by id where rownum <10;

查15-16个

select from table order by id where rownum <17

minus

select from table order by id where rownum <15;

a:select count() from info_yhda

b:select device_number from device_number where device_number like '%8888'group by device_number having count()>1

摘 要 随着数据库应用范围及规模的不断扩大,数据库的性能问题逐渐显现,优化数据库有助于维持系统的稳定性以及运行的高效性。本文主要依据笔者在实际工作中的精英,对SQL语句优化的目的、SQL语句优化技术及原则进行全面分析和阐述。

关键词 ORACLE数据库;SQL语句;优化

1前言

随着现代化信息技术的迅猛发展,互联网应用的日益普及,数据库技术的影响力越来越大。作为信息系统管理的核心,数据库的主要 *** 作就是查询,数据库的应用效率在很大程度上是由查询速度决定的,特别是对于规模较大的数据库而言,查询速度十分关键。查询速度在SQL语句中占有很大比重,所以,通过对查询语句进行优化有助于促进应用系统性能及效率的进一步提升。

2SQL语句优化分析

21SQL语句优化的目的

对于一个数据库而言,在确保设计无误的前提下,要想避免出现性能问题必须确保其拥有合理的SQL语句结构。最简单的数据库寻找数据路径是对SQL语句进行调整,ORACLE数据库性能提升的主要途径就是对SQL语句进行适当的调整。从本质上讲,SQL语句优化就是确保所使用的语句可以被优化器识别,对索引进行有效利用以便控制表扫描的I/O次数,有效防止出现表搜索。用高性能的SQL语句替代低性能的SQL语句,确定最佳的数据查找路径,尽可能使CPU时间与I/O时间保持平衡是进行优化的主要目的。在对SQL语句进行优化的过程中,以系统需求为依据确定最有可能实现性能提升的语句并进行优化。

22SQL语句优化技术及原则

当数据量积累到一定程度之后,对于数据库全表SQL语句进行一次扫描,若查询策略较好,一般只用几秒钟,但如果SQL语句性能较低,就需要用几分钟甚至更多时间。从这点不难看出,SQL语句性能对于查询速度具有极大的影响,所以,对于应用系统而言,不仅能满足功能的实现,还要保证SQL语句的质量。

(1)采取适宜的索引。为达到优化查询的目的,一项重要工作就是确定相适应的索引,并严格依照原则加以使用,与此同时,为有效控制I/O竞争,不可以在同一个磁盘中同时建立索引和用户表空间。

语句1:SELECT CUS_NO, CUS_NAME FROM CUSTOMER WHERE CUS_NO NOT IN

(SELECT CUS_NO FROM SERVICE);

语句2: SELECT CUS_NO, CUS_NAME FROM CUSTOMER WHERE NOT EXISTS

(SELECT FROM SERVICE WHERE SERVICECUS_NO=CUSTOMERCUS_NO);

上述两个语句可以达到一致的查询结果,对二者进行对比,当执行语句1时,由于ORACLE未利用CUSTOMER 表上CUS_NO索引,所以就会扫描整表,在执行语句2的过程中,ORACLE所扫描的只是CUSTOMER 表子查询中的联合查询,并且使用了CUS_NO索引,因此,在执行效率方面明显优于前者。

(2)避免在SELECT子句中出现“”。ORACLE在进行解析时,需要按照一定顺序对“”进行转换,该项转换工作的进行需要对数据库的数据字典进行查询,势必需要花费较多的时间,这样就会导致较低的效率,所以,要避免在SELECT子句中出现“”。

(3)如果必要可以利用COMMIT提交事务。ORACLE能够自动提交DDL语句,而诸如DML等类型的语句的提交则是通过手动方式或者回滚事务实现的。在编写应用程序的过程中,在 *** 作诸如insert、delete以及update 等较为复杂的语境的时候,利用COMMIT提交事务可以讲会话中持有的锁加以释放,将存在于缓存中的未经修改的数据块进行清除,进而将系统资源予以释放,促进系统性能的进一步提升,因此,如果有必要,可以利用COMMIT对相关事务进行提交。

(4)联合查询连接顺序的确定。如果查询 *** 作涉及到多个表,基础表应当是交叉表,所谓交叉表具体是指被其他表引用的表。连接执行效果在很大程度上受到FROM语句中表的顺序的影响,对于FROM中所包含的表,ORACLE解析器进行处理的顺序是由右至左,SQL语句中所选择的基础表会因优化器的不同而有所区别,在使用CBO的情况下,优化器会对SQL语句中各个表的物理大小以及索引状态进行检查,在此基础上确定一个花费最小的执行路径;在使用RBO的情况下,如果全部的连接条件均有索引与之相对应,那么,FROM子句中位置最后面的表就是基础表。

(5)IN用EXISTS取代。在对数个基础表查询过程中,一般需要进行表的连接。因为利用IN的子查询过程中,ORACLE的扫描对象是全表,因此,出于提高查询效率目的的考虑,应当将IN用EXISTS取代。

(6)在索引列中不使用计算。当通过对函数进行引用在WHERE子句中进行计算的时候,假如索引列只是函数的一部分,优化器就会针对全表进行扫描,而不会使用索引,所以,在索引列中不能使用函数。

3结语

综上所述,随着现代化信息技术的迅猛发展,互联网应用的日益普及,数据库技术的影响力越来越大。在信息量迅速激增的形势下,数据库优化调整成为当前所面临的一大关键性问题,特别是对规模较大的数据库而言,及时进行优化的意义更加倍重大。对于数据库的运行性能而言,最主要的影响因素主要体现在以下几点:数据库系统架构的设计是否合理,资源配置是否科学以及SQL语句编写效率等。笔者从事的是电信企业的运营分析工作,每天都要从数据库取各种数据,可以说是离不开数据库,所以在实践中,我觉得严格遵守SQL语句优化原则及方法,并在实践中及时总结经验教训,可以实现对系统响应时间的有效控制,促进运行效率的提升。

参考文献

[1] 许开宇,胡文骅 如何提高ORACLE数据库应用程序的性能[J] 计算机应用与软件 2002(10)

[2] 郑耀,吴建岚 基于Oracle数据库的语句优化策略[J] 信息与电脑(理论版) 2011(07)

[3] 高攀,施蔚然 基于Oracle数据库的SQL语句优化[J] 电脑编程技巧与维护 2010(22)

[4] 钟小权,叶猛 Oracle数据库的SQL语句优化[J] 计算机与现代化 2011(03)

作者简介:

王勇军,男,(19811-),吉林通化人,就职于中国联合网络通信有限公司长春市分公司,通信工程师,本科,研究方向:SQL使用

(作者单位:中国联合网络通信有限公司长春市分公司)

以上就是关于求教oracle数据库的一些语句全部的内容,包括:求教oracle数据库的一些语句、Oracle数据库sql语句,求解释~、Oracle数据库sql语句等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9845136.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存