Oracle数据库使用过程中,有一些技巧是使用过程中需要去了解和掌握的,掌握这些技巧我们在以后使用数据库的过程中就可以避免走很多弯路,提高查询效率。本文主要介绍一下七点技巧,希望能对各位有所帮助,接下来我们就一一介绍。
使用技巧:
1. procedure和function中的select后面不要跟变量,否则会极大的波及SQL效率。
2. TRUNCATE 在procedure中无法利用,可写成:
EXECUTE IMMEDIATE 'truncate table smic_rtd_bullet_lot_tmp'; |
3. 当运行DML(数据垄断语言,增删改查)语句时,PL/SQL敞开一个内建游标并处理收获,游标是维护查询收获的内存中的一个区域,游标在运行DML语句时敞开,告终后关闭。隐式游标只利用SQL%FOUND,SQL%NOTFOUND,SQL%ROWCOUNT三个属性。SQL%FOUND, SQL%NOTFOUND是布尔值,SQL%ROWCOUNT是整数值。告终循环时能够此作为退出循环的推断规范。
4. 为了不重复解析雷同的SQL语句,在第顺次解析尔后,ORACLE将SQL语句储藏在内存中。这块位于系统大局区域SGA(system global area)的分享池(shared buffer pool)中的内存能够被所有的数据库用户分享。因而,当你厉行一个SQL语句(有时被称为一个游标)时,万一它和之前的厉行过的语句全面雷同,ORACLE就能很快获得曾经被解析的语句以及良好的厉行路径。分享的语句定然中意三个条件:
a. 字符级的比拟:目前被厉行的语句和分享池中的语句定然全面雷同。包括所有的空格和字母大小写。
b. 两个语句所指的对象定然全面雷同。例如两个用户对于统一个表,一个是table owner,一个是引用同义词,那么是无法SQL分享的。
c. 两个SQL语句中定然利用雷同的名字的绑定变量。凡是变量名字雷同,即便在运行时,赋于不同的绑定变量雷同的值也是能够的。
统一SQL在一个session多处利用,万一多次改变,经常因为空格和字母大小写不统一导致SQL未曾分享。利用 WITH a AS (SELECT * FROM ……) 将查询命名为a,尔后能够将a当做SQL利用,能够确保顺次解析多次利用,能够长进效率。
5. 凡是有可能,在过程中尽量多利用COMMIT,这么过程的功能获得长进,需求也会因为COMMIT所释放的资源而收缩:
COMMIT所释放的资源:
a. 回滚段上用于复如数据的消息。
b. 被过程语句获得的锁。
c. redo log buffer 中的空间。
d. ORACLE为管教上述3种资源中的内部花费。
在利用COMMIT时定然要当心到事务的全面性,切实中效率和事务全面性经常是鱼和熊掌不可得兼。
6. 穿越内部函数长进SQL效率。
|