Oracle性能优化与Delphi代码
Oracle性能优化与Delphi代码
刚学了点oracle方面的知识,感觉以前写代码只凭喜好写,完全没有深究缘由,导致在内行人看来,写的都是垃圾代码,现在就把学到的一些东西写出来,也算是给刚入门的朋友一点帮助吧。
以前,写数据库访问代码,感觉很简单,不就是sql语句嘛,所以什么语句都是这样写:
A:
qry1.Close;
qry1.SQL.Text := edt1.Text ;
qry1.Open
;
感觉挺好,语句自己拼,拼好了,直接执行。
还有另外一种写法:
B:
qry1.Close;
qry1.SQL.Text := edt1.Text
;
qry1.Parameters.ParamByName('vvv').Value := edt2.Text ;
qry1.Open
;
感觉这样写也是达到一样的结果,而用参数的方法,感觉很麻烦,多余,edt1.Text里变量还都得写成参数,所以从来不这样写,似乎也看不出和A方法有什么区别,只是更多了些麻烦。
最近学了点oracle性能优化方面的知识,知道了oracle的共享池,及其对性能的影响。共享池保存的是最近使用的sql语句,如果有相同的sql语句在共享池中,就不会再做分析、生成执行计划,效率就会提高很多,但是select
* from tableA where aa='a'和select * from tableA where
AA='a',会被认为是不同的sql语句,oracle会检查共享池里有没有完全相同的语句,没有则分别做分析、生成执行计划,虽然实质上是一样的sql语句。
所以,可以通过绑定变量的方式,使这些只是条件不同的语句,可以使oracle能够重复利用执行计划。
测试一下。
在pl/sql里的sql windows里,执行语句:
select sql_text from v$sqlarea where sql_text
like '%select * from abc where%'
查看共享池中的sql语句,返回的结果只有一行:
select sql_text
from v$sqlarea where sql_text like '%select * from abc where%'
然后执行语句:
select * from abc where ff =
1234
然后再查看共享池中的sql语句,看到了,这回结果集有两行返回:
select sql_text from v$sqlarea where
sql_text like '%select * from abc where%'
select * from abc where ff =
1234
执行:
select * from abc where ff =
345
然后再查看共享池中的sql语句,看到了,这回结果集有三行返回:
select sql_text from v$sqlarea where
sql_text like '%select * from abc where%'
select * from abc where ff =
1234
selec
相关文档:
要找Oracle 9i for Linux挺麻烦的,干脆自己留个记录比较方便。
Oracle9i Database Release 2 Enterprise/Standard/Personal Edition for Windows NT/2000/XP
http://download.oracle.com/otn/nt/oracle9i/9201/92010NT_Disk1.zip
http://download.oracle.com/otn/nt/oracle9i/9201/92010NT_Disk2.zip
http://downlo ......
oracle导出导入数据操作
Oracle数据导入导出imp/exp命令
Oracle 数据导入导出imp/exp就相当于oracle数据还原与备份。exp命令可以把数据从远程数据库服务器导出到本地的dmp文件,imp命令可以把 dmp文件从本地导入到远处的数据库服务器中。 利用这个功能可以构建两个相同的数据库,一个用来测试,一个用 ......
PL/SQL
1 概述
PL/SQL是一种过程化编程语言,用户可以使用PL/SQL编写过程、函数、程序包、触发器并且存储这些代码。
PL/SQL不区分大小写。
PL/SQL分为几部分:
declare 可选 &nbs ......