织梦CMS - 轻松建站从此开始!

罗索

在ORACLE下编写性能好的存储过程的一些经验

jackyhwei 发布于 2011-06-24 09:12 点击:次 
大家好,在此谈一些在ORACLE9I和PL/SQL Developer作为开发工具的环境下,对于如何编写性能好的存储过程,提一些自己的看法
TAG:

大家好,在此谈一些在ORACLE9I和PL/SQL Developer作为开发工具的环境下,对于如何编写性能好的存储过程,提一些自己的看法:

1、代码的清晰性是第一步的,代码应该整齐、缩进一致、注释充分。
    PL/SQL DEV这个工具里面提供了代码格式化的工具:点击Edit菜单,点击“PL/SQL Beautifier”,工具会自动为我们排版布局。建议每次编写完成后都执行一下这个工具。
 
2、尽量不要拼装SQL。
   ·PL/SQL语言不善于处理字符串,在存储过程中拼装SQL会使代码看起来很乱,维护起来很费力;
   ·拼装的SQL只能动态执行,没有绑定变量,性能也不高;
    ·拼装的过程中出错,调试起来很麻烦;错误只能在运行期发现,而不能在编译期发现;
   ·拼装的SQL在优化阶段很麻烦,一条已经优化好的语句要拆开放到代码里面去才行。
 
3、具体问题具体处理,不要偷懒。
    例如WEB中的分页一般要进行两次查询,一次获得记录的总数,一次取得当前页的数据。
    很多时候,取得记录数和取得数据是不同的,把他们分别进行处理,能大大提高性能。
 
4、一个存储过程只干一件事情,不要尝试去写一个功能完备的存储过程。
 
5、养成“编写好语句后,先按F5看看执行计划”的好习惯。
    一条SQL执行的快慢的最本质的区别还是在于执行计划的好坏。学会看执行计划,分析语句是否能更好地利用到索引。
    在数据量大的情况下,最好把参数代进去,实际执行一下,验证语句是否与所想的一样快。
 
6、数据量很大,语句优化了还是执行很慢的时候,“大表变小表,小表再连接”的方法非常管用。
    例如:语句需要连接三个表,执行得非常慢。如果采用了临时表,先把其中两个表的数据汇总后存储到临时表,再和大的表连接,性能会高出很多。虽然一条语句写成了三条,但是性能反而会提高。
 
7、一定一定不要使用游标。
   与上面的原则相反,大多数时候,尽量用一条SQL完成。SQL是批量的,而且可以在CPU的层面并行执行,在RAID的层面可以并行读取,如果使用游标,就只能一条一条的执行,性能绝对高不了。
(ah__fu)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/201106/14609.html]
本文出处:hi.baidu.com/ah__fu 作者:ah__fu
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容