oracle常用笔记

2024-07-16

oracle常用笔记(共7篇)

篇1:oracle常用笔记

Oracle的销售在向客户兜售其数据库系统一直把它吹捧为牢不可破的,耍嘴皮子容易,兑现起来可就不那么容易了,

攻击Oracle的常用手段

不管什么计算机系统,人们总能够找到攻击它的方法,Oracle也不例外。本文将和大家从 的角度讨论 是用哪些方法把黑手伸向了你原以为他们不能

篇2:oracle常用笔记

-05-05oracle修改scott密码与解锁的方法详解

-07-07oracle 服务启动,关闭脚本(windows系统下)

-03-03Oracle对两个数据表交集的查询

2007-03-03OracleEXP和IMP用法和介绍

2009-08-08Oracle 日期的一些简单使用

-11-11Oracle中instr函数使用方法

-01-01oracle下实现恢复一个丢失的数据文件的代码

2007-03-03Oracle数据库集复制方法浅议

篇3:Oracle常用函数及实例

关键词:Oracle数据库,数字函数,字符函数,日期时间函数,转换函数,Decode函数

根据函数是对一行记录还是多行记录进行操作, Oracle内置函数分为单行函数和多行函数。其中, 单行函数每次只对一行记录进行操作, 并得到一行返回结果; 多行函数每次可以对多行记录进行操作, 但得到一行返回结果。本次仅讨论一些常用的单行函数。

1 数字函数

(1) ABS (x)

函数ABS (x) 的功能是求x的绝对值。

(2) CEIL (x)

函数CEIL (x) 的功能是, 返回大于或等于x的最小整数。

(3) FLOOR (x)

函数FLOOR (x) 的功能是返回小于或等于x的最大整数。

(4) MOD (x,y)

函数MOD (x,y) 的功能是返回x除以y的余数。

(5) SIGN (x)

函数SIGN (x) 的功能是, 若x为负数, 则返回-1; 若x为正数, 则返回1; 若x为0, 则返回0。

2 字符函数

(1) CONCAT (x,y)

函数CONCAT (x,y) 的功能是将字符串x与字符串y连接起来所形成的的字符串作为结果返回。

(2) INITCAP (x)

函数INITCAP (x) 的功能是将字符串x中的每个单词的首字母都转换成大写所形成的的字符串作为结果返回。

(3) INSTR (x,y [,n] [,m])

函数INSTR (x,y [,n] [,m]) 的功能是, 在字符串x中查找子串y, 确定并返回y在x中的位置。可选参数n指定查找的其实位置, 可选参数m指定返回y第几次出现的位置; 省略参数n或m, 其默认值均为1。

(4) LENGTH (x)

函数LENGTH (x) 的功能是返回字符串x的长度;

(5) LOWER (x)

函数LOWER (x) 的功能是将字符串x中的字母转换成小写后作为结果返回。

(6) UPPER (x)

函数UPPER (x) 的功能是将字符串x中的字母转换成大写后作为结果返回。

(7) LTRIM(x [,y]) 和 RTRIM (x [,y])

函数LTRIM (x [,y]) 的功能是从字符串x的左边截去包含在字符串y中的字符。如果不指定参数y, 则默认截去空格。函数RTRIM (x [,y]) 的功能是, 从字符串x的右边截去包含在字符串y中的字符。如果不指定参数y, 则默认截去空格。

(8) TRIM ([y from] x)

函数TRIM ([y from] x) 的功能是从字符串x的左边和右边同时截去一些字符。可选参数y指定要截去的字符; 如果不指定参数y, 则默认截去空格。

(9) SUBSTR (x,n [,m])

函数SUBSTR (x,n [,m]) 的功能是返回字符串x中的一个子串, 这个子串从字符串x的第n个字符开始, 截取参数m个字符。

(10) REPLACE (x,y,z)

函数REPLACE (x,y,z) 的功能是将字符串x中所具有的子串y用子串z替换, 替换后形成的字符串作为返回值。

(11) NVL (x,y)

函数NVL (x,y) 的功能是 如果x为NULL, 则返回y值 ;否则返回x值。其中x与y的数据类型必须要匹配。

3日期时间函数

(1) SYSDATE

函数SYSDATE的功能是返回当前系统的日期时间。

(2) LAST_DAY (x)

函数LAST_DAY (x) 的功能是返回日期x所在月份的最后一天的日期。

(3) NEXT_DAY (x,week)

函数NEXT_DAY (x,week) 的功能是返回日期x后的第一个由week指定的星期几所对应的日期。

(4) TRUNC (x, [fmt])

函数TRUNC (x, [fmt]) 的功能是 返回截断 日期x时间数据。fmt可以取‘YEAR’、‘MONTH’、‘DAY’三者之 一。fmt取‘YEAR’ , 则返回本 年的1月1日 ; 如果fmt取‘MONTH’, 则返回本月的1日 ; 如果fmt取‘DAY’ , 则返回天的个位为0 (只有个位时不变) 的日期。

4转换函数

(1) TO_CHAR (x [,format])

函数TO_CHAR (x [,format]) 的功能是 将x转换为一 个VARCHAR2字符串。x取数字或日期时间类型数据 , 可选参数format指定x的格式。

(2) TO_DATE (x [,format])

函数TO_DATE (x [,format]) 的功能是将字符 串x转换为DATE类型数据。可选参数format指定x的格式。

5 DECODE函数

DECODE函数是ORACLE PL/SQL的功能强 大的函数 之一, 目前只有ORACLE公司的SQL提供了此函数。

(1) DECODE中的逻辑

DECODE (条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值)

该函数的含义如下:

(2) 使用DECODE进行转义

现有表table_student, 有sex列 (性别), 存储内容为: 1男, 0女, 要求查询结果显示“男”, “女”。

(3) 使用DECODE与ORDEY BY对字符列进行特定的排序

现有表table_region, 有region_name列, 要求按照“安徽”> “江苏” > “湖北”的顺序进行查询排序 。

(4) 使用DECODE对数据表进行行列转置

现有表table_money, 有weekday列, 存放星期几, 如1-7等, 其中1代表星期一。在表中存放时, 是以以下形式存放的。

现生成报表时, 需要按照星期几来统计和显示, 如星期六、星期日等, 则可使用DECODE进行转置。

篇4:oracle常用笔记

1.控制文件的作用

控制文件在Oracle数据库中扮演着很重要的角色,没有控制文件(或者控制文件损坏了),运行着的实例立即崩溃,关闭着的死活打不开,你以为你是谁,可以说,控制文件一旦损坏,数据库必然down了,

[精品]Oracle控制文件、数据文件、临时文件总结笔记

。Oracle数据库实例启动过程中,当启动到unmount时,此时只是在内存中为Oracle实例分配了实例空间,然后如果继续要启动到mount状态,这个时候控制文件就闪亮登场了,因为Oracle要依据控制文件找到数据文件跟重做日志文件的路径,确定找到了再进去mount状态,至于打开数据库就是确定这些文件都一致,没有问题的话就能打开了,

2.控制文件包括了哪些重要内容

控制文件包括了很多重要的信息,比如数据库的数据文件、重做日志文件、数据库的名称、数据库创建信息、表空间信息、数据文件的状态、日志文件信息、备份信息、检查点信息等

3.控制文件的性质

控制文件是一个2进制文件,不可以直接通过文本编辑器进行编写,这个文件由Oracle自己进行维护,Oracle建议控制文件至少有两份冗余,并且放在不同的磁盘中,这样能够避免一个磁盘的损坏,造成整个控制文件都丢失的情况,因为他还有一个兄弟健在,尽管一个坏了,数据库还是得down,但是有一个在的话,至少我恢复起来要快不少。

4.查看控制文件

篇5:口译笔记常用缩略语

acc = account, accountant acdg = according acpt = accept ad = advertisement adm = administration ads = address adv = advice agr = agriculture agt = agent alt = altitude a.m.= ante meridiem = before noon AMAP = as much as possible amb = ambassador amt = amount anal = analysis anc = ancient anon = anonymous ans = answer app = appendix Apr = April apt = apartment arch = architecture arr = arrive;arrival ASAP = as soon as possible ass = assistant;association at = atmosphere;atomic att = attorney;attention Aug = August aux = auxiliary av = average ave = avenue a.w.l.= absent with leave(准假)a.w.o.l.= absent without official leave(无故缺席)B.A.= Bachelor of Arts bal = balance B.C.= before Christ bd = board bdl = bundle bk = bank;book bkts = baskets B/L = bill of lading(提单)BLDG = building bp = birthplace br = branch;brother B.S.= Bachelor of Science

bu = bureau C = capacity;century;chapter;centigrade;cost;city;center cal = calendar;caliber;calories cap = capital;captain cat = catalog cc = carbon copy(复印件;抄送)CEO = chief executive officer cert = certificate CFM = confirm cncl = cancel cp.= compare cit = citizen civ = civil;civilization clk = clerk cml = commercial co.= company c/o = care of(转交)col = college;color com = commentary;common;communication;community comm = commission comp = complete;computer;competition con = conclusion;against cond = condition cont.= continent;continued corp = corporation cust = customer;custom;customs Dec = December dec = deceased;declaration def = defender;defense deg = degree dep = deposit DEPT = department disc = discount dist = distance;distinguish div = divide;divorced do.= ditto(同上)dorm = dormitory dpt = departure dz = dozen e = east;earth;engineering econ = economics;economy ed.= education;editor e.g.= exempli gratia = for example encl.= enclosed;enclosure esp.= especially etc.= et cetera = and so on

ex.= example;exception;extra exp.= export expln = explain ext = extend;extension FAX = facsimile Feb.= February fem = female;feminine ff.= following fig = figures fin = finance;financial fl = fluid FLT = flight FOB = free on board(船上交货;离岸价格)for = foreign;forestry fp = freezing point fr = frequent Fri.= Friday frt = freight(货物;货运)ft = foot;feet(脚;英寸)fut = future FYR = for your reference(仅供参考)g = gold;grain;guide;gender;gravity G.A.= General Assembly(联合国大会)gen.= generally gent = gentleman;gentlemen gm = gram;general manager gov = government gs = general secretary(秘书长)h = harbor;hundred;husband;hydrogen hd = head(头部;首脑)hf = half Hon = honorable;honorary H.Q.= headquarters hr = hour ht = height hypoth = hypothesis;hypothetical i.a.= in absence;absent ib.= ibidem = in the same place ID = identity;identity card i.e.= id est = that is imp = import;imperial IMPS = impossible IMPT = important in.= inch;inches ind = industrial;independent indiv = individual

info = information ins = insurance inst.= instant;institute int.= interior;interest(兴趣;利息)I/O = instead of IOU = I owe you(借据)I.Q.= intelligence quotient IVO = in view of(鉴于,考虑到)is.= island e = east;earth;engineering econ = economics;economy ed.= education;editor e.g.= exempli gratia = for example encl.= enclosed;enclosure esp.= especially etc.= et cetera = and so on ex.= example;exception;extra exp.= export expln = explain ext = extend;extension FAX = facsimile Feb.= February fem = female;feminine ff.= following fig = figures fin = finance;financial fl = fluid FLT = flight FOB = free on board(船上交货;离岸价格)for = foreign;forestry fp = freezing point fr = frequent Fri.= Friday frt = freight(货物;货运)ft = foot;feet(脚;英寸)fut = future FYR = for your reference(仅供参考)g = gold;grain;guide;gender;gravity G.A.= General Assembly(联合国大会)gen.= generally gent = gentleman;gentlemen gm = gram;general manager gov = government gs = general secretary(秘书长)h = harbor;hundred;husband;hydrogen hd = head(头部;首脑)

hf = half

Hon = honorable;honorary

H.Q.= headquarters

hr = hour

ht = height

hypoth = hypothesis;hypothetical

i.a.= in absence;absent

ib.= ibidem = in the same place

ID = identity;identity card

i.e.= id est = that is

imp = import;imperial

IMPS = impossible

IMPT = important in.= inch;inches

ind = industrial;independent

indiv = individual

info = information

ins = insurance

inst.= instant;institute

int.= interior;interest(兴趣;利息)

I/O = instead of

IOU = I owe you(借据)

I.Q.= intelligence quotient

IVO = in view of(鉴于,考虑到)

is.= island

e = east;earth;engineering

econ = economics;economy

ed.= education;editor

e.g.= exempli gratia = for example

encl.= enclosed;enclosure

esp.= especially

etc.= et cetera = and so on

ex.= example;exception;extra

exp.= export

expln = explain

ext = extend;extension

FAX = facsimile

Feb.= February

fem = female;feminine

ff.= following

fig = figures

fin = finance;financial

fl = fluid

FLT = flight

FOB = free on board(船上交货;离岸价格)

for = foreign;forestry

fp = freezing point fr = frequent Fri.= Friday frt = freight(货物;货运)ft = foot;feet(脚;英寸)fut = future FYR = for your reference(仅供参考)g = gold;grain;guide;gender;gravity G.A.= General Assembly(联合国大会)gen.= generally gent = gentleman;gentlemen gm = gram;general manager gov = government gs = general secretary(秘书长)h = harbor;hundred;husband;hydrogen hd = head(头部;首脑)hf = half Hon = honorable;honorary H.Q.= headquarters hr = hour ht = height hypoth = hypothesis;hypothetical i.a.= in absence;absent ib.= ibidem = in the same place ID = identity;identity card i.e.= id est = that is imp = import;imperial IMPS = impossible IMPT = important in.= inch;inches ind = industrial;independent indiv = individual info = information ins = insurance inst.= instant;institute int.= interior;interest(兴趣;利息)I/O = instead of IOU = I owe you(借据)I.Q.= intelligence quotient IVO = in view of(鉴于,考虑到)is.= island J = judge;justice jour = journal;journalist jr.= junior(大学三年级学生;年少的;初级的)kg = kilogram(千克;公斤)km = kilometer(公里)

lat.= latitude lb.= pounds(磅;英镑)L/C = letter of credit(信用证)leg = legal lib = library;librarian liq = liquid lit = literature long.= longitude M.A.= Master of Arts mach = machinery mag = magazine man.= manual;manufacture Mar = March math = mathematics MDL = model(型号;模特)Mdm = Madam med.= medicine;medical mem = member;memoir(回忆录)memo = memorandum(备忘录)mid = middle min = minute;minimum mkt.= market mod = moderate;modern Mon.= Monday mph = mile per hour(每小时英里数;车速)Mr.= Mister Mrs.= Mistress MS = manuscripts(手稿)msg = message Mt = Mount;mountain mus = music;museum n = north;noon;name;normal nat = national;native;natural n.d.= no date(无日期)NLT = not later than(不迟于)No.= number Nov.= November nr = near obj = object;objective obs = obsolete(过时的);observe obt = obtain Oct.= October off.= office;official op.= opera;operation;opposite ord = ordinary org = organization

orig = original oz.= ounce(盎司)p.= page;power;pressure para = paragraph part = particular;partner pass = passive;passenger PAT = patent payt = payment pc = piece;personal computer pd.= paid(钱款)已付

perf = perform;performance Ph.D.= Doctor of Philosophy pk = park;peak(备注:pk这个符号大家可以根据时髦的用语来灵活拓展其含义)pkg = package PLS = please p.m.= post meridiem = [w]afternoon POB = post-office box pop = popular;population pr.= pair;preferred prec = preceding prim = primary;primitive prin.= principle pro = product Prof.= professor pub.= public;publish qr.= quarter qt.= quantity qua = quality r.= radius;railroad;retired rcd = received rcpt = receipt Rd = road re = about(关于)reg = register;region rep = representative rev = revise;reverse;revenue riv = river rm.= room rpt = report;repeat Sat.= Saturday sch = school sci = science sec = second;section;sector sig.= signal;signature sitn = situation sp.= species(物种);specimen(标本)

篇6:读书笔记的三种常用方式

读书笔记一般分为摘录、提纲、批注、心得几种,格式及写法并不艰深,心得笔记中的读后感有点麻烦,但只要懂得论点、论据和论证这三要素的关系,就会轻松拿下,因为读后感不过就是一种议论文而已。

读书笔记,是指人们在阅读书籍或文章时,遇到值得记录的东西和自己的心得、体会,随时随地把它写下来的一种文体。古人有条着名的读书治学经验,叫做读书要做到:眼到、口到、心到、手到。这“手到”就是读书笔记。读完一篇文章或一本书后,应根据不同情况,写好读书笔记。常用的形式有:

1、摘要式读书笔记

摘要式读书笔记,是在读书时把与自己学习、工作、研究的问题有关的语句、段落等按原文准确无误地抄录下来。摘录原文后要注明出处,包括题目、作者、出版单位、出版日期,页码等,便于引用和核实。摘录要有选择,以是否有用作为摘录的标准。摘录式笔记可分为:

(1)索引读书笔记

索引读书笔记是只记录文章的题目、出处的笔记。如书刊篇目名、编着者、出版年月日、藏书处。如果是书,要记册、章、节,如果是期刊,要记期号,报纸要记年月日和版面,以备日后查找方便。例如:庄照:《也谈为谁立传》,《光明日报·〈史学〉》

(2)抄录原文读书笔记

抄录原文读书笔记就是照抄书刊文献中与自己学习、研究有关的精彩语句、段落等作为日后应用的原始材料。摘抄原文要写上分类题目,在引文后面注明出处。

2、评注式读书笔记

评注式读书笔记不单是摘录,而且要把自己对读物内容的主要观点、材料的看法写出来,其中自然也包括表达出笔记作者的感情。评注式笔记有时对摘录的要点做概括的说明。评注式笔记有下列几种:

(1)书头批注

书头批注,是一种最简易的读书笔记作法。就是在读书的时候,把书中重要的地方和自己体会最深的地方,用笔在字句旁边的空白处打上个符号,或者在空白处加批注,或者是折页、夹纸条作记号等等。这种笔记方法不但对书中的内容可以加深理解,也为日后查找提供了方便。

(2)提纲

提纲是用纲要的形式把一本书或一篇文章的论点、论据提纲挚领地叙述出来。提纲可按原文的章节、段落层次,把主要的内容扼要地写出来。提纲读书笔记可以采用原文的语句和自己的语言相结合的方式来写。

(3)提要

提要和提纲不同。提纲是逐段写出来的要点,提要是综合全文写出要点。提要可以完全用自己的语言扼要地写出读物的内容。提要除客观叙述读物内容外,带有一些评述的性质。

另一种提要,是对一篇文章或一本书的内容梗概作简要的说明。

(4)评注读书笔记

评注读书笔记,是读完读物后对它的得失加以评论,或对疑难之点加以注释,这样的读书笔记叫作评注笔记。例如鲁迅读《蕙櫋杂志》中的一段:清严无照《蕙櫋杂志》:西湖有严嵩和鄂王《满江红》词石刻,甚宏壮。词即慷慨,书亦瘦劲可观,末题华盖大学士。后人磨去姓名,改题夏言。虽属可笔,然亦足以惩奸矣。

案:严嵩篇和岳飞词,有如是作为,后人留词改名,有如是自欺,严先生以为可笔而又许其惩奸,有如是两可。寥寥六十字,写尽三态。(鲁迅《集外集拾遗·书苑折枝

(二)》)

(5)补充原文读书笔记

补充原文的读书笔记,是在读完原书或文章之后,感到有不满足的地方进行补充。需要注意的是补充原文不是随意地加以补充,而是要围绕中心思想加以引申或发挥。

3、心得式读书笔记

心得式读书笔记,是在读书之后写出自己的认识、感想、体会和得到的启发与收获的一种笔记。它有如下几种:

(1)札记

札记也叫札记,是读书时把摘记的要点和心得结合起来写成的。这种札记的形式是灵活多样的。可长可短。

(2)心得

心得笔记也叫读后感。读书后把自己的体会、感想、收获写出来。这些读书笔记,可以写读书时的心得体会,也可以写对原文的某些论点的发挥或提出批评、商榷的意见。写这种笔记,一般是以自己的语言为主,也可适当地引用原文。

(3)综合读书笔记

综合读书笔记是读了几本或几篇论述同一问题的书文后,抓住中心评论它们的观点、见解,提出自己看法的笔记。

篇7:oracle常用笔记

1 书写习惯

为了不重复解析相同的SQL语句, 在第一次解析之后, Oracle将SQL语句存放在内存中。这块位于系统全局区域SGA (System Global Area) 的共享池中的内存可以被所有的数据库用户共享。因此, 当你执行一个SQL语句时, 如果它和之前的执行过的语句完全相同, Oracle就能很快获得已经被解析的语句以及最好的执行路径。大大地提高了SQL的执行性能并节省了内存的使用。但只对简单的表提供高速缓冲 (cache buffering) , 这个功能并不适用于多表连接查询。

因此写SQL语句时, 应保持固定的SQL书写习惯, 相同的查询尽量保持相同的形式, 包括字母的大小写、标点符号、换行的位置等。

使用动态SQL列引用'*'是一个方便的方法, 但这是一个非常低效的方法。Oracle在解析的过程中, 会将'*'依次转换成所有的列名, 这个工作是通过Oracle多表查询数据字典完成的, 这将耗费更多的时间。

2 常量优化

常量的计算并不是每次执行之时, 而是在语句被优化时一次性完成。下面是检索年薪大于36000的方法:1) sal>3000*12 2) sal>36000 3) sal/12>3000

如果是第一种情况, 优化器会简单地把它转变成第二种。而第三条语句会对每一行进行计算。因此, 尽量不要将字段置于表达式当中, 否则没有办法优化。尤其当sal上有索引时, 第三种方式将进行全表扫描。

3 操作符优化

3.1 IN操作符优化

在值不多的情况下, 尽量使用“=”和“OR”来替换IN。如, 可把表达式ename IN ('FORD', 'KING', 'JONES') 替换为ename='FORD'OR ename='KING'OR ename='JONES'。

对于连续的数值, 能用BETWEEN就不要用IN。如age IN (20, 21, 22, 23, 24) , 可使用BETWEEN 20 AND 24来替代。

当子查询使用IN时, 为了提高效率, 可以使用EXISTS来替代, 如图1 (a) (b) 所示。 (a) 所在子查询中进行了全表扫描, 而 (b) 进行的是部分扫描。几乎所有的IN操作符子查询都可以改写为使用EXISTS的子查询。在执行IN子查询时, 首先执行子查询, 将查询结果放入临时表再执行主查询, 而EXIST则是首先检查主查询, 然后运行子查询直到找到第一个匹配项。但具体在选择IN或EXIST操作时, 要根据主子表数据量大小来具体考虑。也不建议使用NOT IN, 因为其不能应用表索引, 可以使用NOT EXISTS代替。

3.2 ANY和ALL操作符优化

可将跟随值列表的ANY检索条件用等价的同等操作符和“OR”组成的表达式替换。如sal>ANY (1000, 2000) 可替换为sal>1000 OR sal>2000。

可将跟随子查询的ANY检索条件转换成由“EXISTS”和一个相应的子查询组成的检索表达式。如x>ANY (SELECT sal FROM emp WHERE job='ANALYST') 可替换为EXISTS (SELECT sal FROM emp WHERE job='ANALYST'AND x>sal) 。

可将跟随值列表的ALL操作符用等价的“=”和“AND”组成的表达式替换如sal>ALL (l000, 2000) 表达式会被替换为sal>1000AND sal>2000。

对于跟随子查询的ALL表达式, 可使用ANY和另外一个合适的比较符组成的表达式替

换。如x>ALL (SELECT sal FROM emp WHERE deptno=10) 可替换为NOT (x<=ANY (SELECT sal FROM emp WHERE deptno=10) ) , 然后将ANY用EXISTS和相应的子查询进行替换如NOT EXISTS (SELECT sal FROM emp WHERE deptno=10 AND x<=sal) 。

3.3 BETWEEN操作符优化

可使用“>=”和“<=”比较符来等价的代替BETWEEN操作符。如sal BETWEEN 2000 AND 3000用sal>=2000 AND sal<=3000来代替。

3.4 NOT操作符优化

带有NOT的表达式可以使用多种等价的表达式来替换。如NOT (sal<1000 OR comm IS NULL) 可以替换为NOT sal<1000AND comm IS NOT NULL, 或者替换为sal>=1000 AND comm IS NOT NULL。

在子查询中可以使用<>来替代NOT, 如NOT deptno= (SELECT deptno FROM emp WHERE ename='FORD') 可使用deptno<> (SELECT deptno FROM emp WHERE ename='FORD') 来替换。

3.5 LIKE操作符优化

一般来讲LIKE比较难优化, 因为LIKE关键字支持通配符匹配, 叫正规表达式, 通配符组合可能达到几乎是任意的查询, 比较耗费时间。

可把使用LIKE操作符和一个没有通配符的表达式组成的检索表达式转换为一个“=”操作符表达式。如可把表达式ename LIKE'SMITH'转换为ename='SMITH'。但只能转换涉及到可变长数据类型的表达式, 如果ENAME字段的类型是CHAR (10) , 则转换无效。

通配符尽量不要开头如ename LIKE'%S', 此种写法将使用不到索引, 而较好的写法如ename LIKE'S%', 这样可以根据索引来查询。

3.6 DISTINCT优化

DISTINCT用于禁止重复行的显示;EXISTS用于检查子查询返回行的存在性。可以使用EXISTS来优化DIS-TINCT, 因为DISTINCT在禁止重复行之前要排序检索到的行。

如图2所示。

3.7 使用CASE表达式而不是多个查询

当需要对一个表的相同行执行许多计算时, 使用CASE表达式而不是多个查询。

如图3所示。

3.8 UNION操作符优化

UNION在进行表连接后会去除重复记录, 因此要对结果集进行排序, 删除重复记录。

如果表数据量大的话可能会导致用磁盘进行排序, 如果数据量过大的情况下会用磁盘排序, 大大降低执行效率。因此可采用UNION ALL操作符替代UNION, UNION ALL操作只是简单的将两个结果合并后就返回, 避免了结果集排序。

3.9“<>”操作符优化

不等于操作符不会用到索引的, 因此对它的处理会产生全表扫描。可以用“<”或者“>”代替。如sal<>2000可替换为sal>2000OR sal<2000。

3.1 0“>”操作符优化

当要与整型数值比较的列上存在索引, 则可以使用“>=”来代替“>”。如DEPTNO>=40

比DEPTNO>30高效。其区别在于, 前者将直接跳到第一个DEPTNO等于40的记录而后者将首先定位到DEPTNO=30的记录并且再扫描第一个DEPT大于3的记录。

4 合理的索引设计

Oracle索引是用于提升查询效率的数据库对象。通常在大型表中使用索引特别有效。索引通过快速定位数据的方法, 减少磁盘I/O操作。数据唯一性越高, 索引的速度也越快。索引信息与表独立存放, 这是为了减少磁盘的I/O操作。索引需要占物理空间, 但Oracle通常采用以空间换时间。索引的使用原则为:

1) 查询结果是所有数据行的5%以下时, 使用索引查询效果最好。

2) 在频繁进行排序或分组的列上建立索引。如果待排序的列有多个, 可以在这些列上建立复合索引 (COMPOUND INDEX) 。

3) 在条件表达式中经常用到的不同值较多的列上建立检索, 在不同值少的列上不要建立索引。如果建立索引不但不会提高查询效率, 反而会严重降低更新速度。

4) 在经常进行连接, 但不是外键的列上建立索引。

5) WHERE条件中经常用到表的多列时, 使用复合索引效果会好于几个单列索引。因为当SQL语句所查询的列全部都出现在复合索引中时, 此时由于Oracle只需要查询索引块即可获得所有数据, 当然比使用多个单列索引要快得多。WHERE子句中的这个字段, 必须是复合索引的第一个字段。WHERE子句中的这个字段, 不应该参与任何形式的计算:任何对列的操作都将导致表扫描。

6) 经常需要插入、删除、更新的表上不要建立索引, 建立索引反而会降低效率。

为了让索引更加高效的工作, 定期的重构索引是有必要的。

5 连接优化

在查询中最花费时间是笛卡尔积和连接运算, 因此在必须使用连接时, 应尽可能早地执行选择操作, 尽可能早地执行投影操作, 避免直接做笛卡尔积, 如笛卡尔积避免不了, 在做笛卡尔积之前使用选择和投影减少行的数量和列的数量。

5.1 WHERE子句的顺序

Oracle采用自下而上的顺序解析WHERE子句, 根据这个原理, 表之间的连接必须写在其他WHERE条件之前, 那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾, 这样可以先执行选择运算然后进行连接。WHERE e.deptno=d.deptno ANDdname='ACCOUNTING';

5.2 选择最有效率的表名顺序

ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名, 即FROM子句中写在最后的表将被最先处理。当FROM子句中包含多个表的情况下, 记录条数少的表应该放到后面。但这种方式只在基于规则的优化器中有效。

5.3 使用表连接而不是多个查询

当执行SQL语句时, ORACLE执行了许多工作如解析SQL语句、估算索引的利用率、绑定变量、读数据块等。因此, 使用表连接而不是多次查询可减少访问数据库的次数, 减少ORACLE的工作量。如: ( (a) 方法优于 (b) 方法)

如图4所示。

5.4 使用表别名

当在SQL语句中连接多个表时, 使用表的别名并在每个要查询的字段前加上别名, 这样可以减少解析的时间并减少由于多表中存在同名引起的语法错误。

6 其他优化方法

6.1 避免或简化排序

应当简化或避免对大型表进行重复的排序。当能够利用索引自动以适当的次序产生输出时, 优化器就避免了排序的步骤。以下是一些影响因素:

1) 索引中不包括一个或几个待排序的列。

2) GROUP BY或ORDER BY子句中列的次序与索引的次序不一样。

3) 排序的列来自不同的表。

为了避免不必要的排序, 就要正确地增建索引, 合理地合并数据库表 (尽管有时可能影响表的规范化, 但相对于效率的提高是值得的) 。如果排序不可避免, 那么应当试图简化它, 如缩小排序的列的范围等。

6.2 大表优化查询

在进行大表查询时, 除了上述方法外, 对于大表还可适当使用簇, 以加快查询。也可以使用分区表来存储数据。按照分区的规则进行表的访问, 可提升访问速度。

7 验证方法

以上探讨了多种Oracle中的优化方法, 可以使用Oracle中的执行计划 (Explain Plan) 来验证方法是否得到了优化。在一些第三方工具中 (如PL/SQL Developer) 中也提供了执行计划。在验证的过程中要先准备一些测试数据, 通常数据量越大所优化的效果越好。

参考文献

[1]丁宝康.数据库系统原理[M].北京:经济科学出版社, 2011.

[2] (美) Jason Price.Oracle Database 10g SQL开发指南[M].北京:清华大学出版社, 2010.

[3] (美) David M.Kroenke.数据库原理[M].北京:清华大学出版社, 2008.

[4]谭怀远.让Oracle跑得更快——Oracle 10g性能分析与优化思路[M].北京:电子工业出版社, 2010.

上一篇:家长学校第二课提纲下一篇:日常行为礼仪