Oracle执行exists优化,PHP_解决Oracle性能优化中的问题, 在Oracle性能优化时,用exists - phpStudy...
在Oracle性能优化时,用exists替代in,用表链接替代exists,关于前者,一般效果比较明显,exists效率明显比in高,但是如果要想表连接的效率比exists高,必须在from子句中,将记录多的表放在前面,记录少的表放后面。
关于select... bulk collect into ... limit ...或fetch... bulk collect into ... limit ...句型:
在使用如上句型时,通常我们都会用for或forall循环进行insert/update/delete操作。
for/forall循环方法有好几种,如
第1种:
for tp in tmp.FIRST.. tmp.LAST loop .... end loop;
第2种:
for tp in 1 .. tmp.COUNT loop .... end loop;
第3种:
for tp in indecs of tmp loop .... end loop;
上面的第1种方法有一个致使的弱点,就是在select... bulk collect into ... limit ...或fetch... bulk collect into ... limit ...没有取到数据时,如果没有exit,则第一种方法会报错:ORA-06502: PL/SQL: numeric or value error。因为tmp.FIRST访问不存在,为空值。必须对错误进行错误处理。而在嵌套的循环中,内层的循环是不能用exit的,所有必然遇到这种错误。
第2种方法不会出现这种问题,第3种方法没有试过。
借鉴网上的做法,给出一种使用绑定变量的批量删除数据的存储过程:
PROCEDURE RemoveBat2DjaRecords(参数)
AS type RowIdArray is table of rowid index by binary_integer;
rowIds RowIdArray;
BEGIN loop select rowid BULK COLLECT into rowIds from 表名
where 查询条件 and rownum <= 1000;
exit when SQL%NOTFOUND;
forall k in 1 .. rowIds.COUNT
delete from 表名 where rowid = rowIds(k);
commit;
end loop;
EXCEPTION when OTHERS then rollback;
END RemoveBat2DjaRecords;
上面的1000条是一个可以设定的数,根据你的服务器性能可以扩大或缩小。
Oracle执行exists优化,PHP_解决Oracle性能优化中的问题, 在Oracle性能优化时,用exists - phpStudy...相关推荐
- oracle大于号怎么用,解决MyBatis的mapper中SQL小于号或大于号报错-tag name expected
通常写SQL我们都会在Navicat里面写好条件测试没问题之后才会把SQL放到mapper里面,有次我在写Oracle的分页的时候因为用到了<=符号,在Navicat测试的时候是没问题的,但是放 ...
- mysql not in 性能_SQL中Execpt和not in 性能区别
本文章介绍关于SQL中Execpt和not in 性能区别 ,有需要的同学可以仔细的看看这两个的性能哦. 主要讲 except 和 not in 的性能上的区别. 代码如下 复制代码 CREATE T ...
- distinct mysql性能_MySQL中distinct和group by性能比较
MySQL中distinct和group by性能比较[转] 之前看了网上的一些测试,感觉不是很准确,今天亲自测试了一番.得出了结论(仅在个人计算机上测试,可能不全面,仅供参考) 测试过程: 准备一张 ...
- 解决 Oracle10g安装过程中无法确定主机的IP地址时产生该异常错误
今天在虚拟机中安装Oracle遇到了小小的问题,跳出对话框"无法确定主机的IP地址时产生该异常错误",查了一下资料还是解决了,这里吧解决办法和大家分享一下! 首先我们需要知道自己的 ...
- oracle 如何边看表中字段信息_【Oracle移行到Sqlserver完美解决案】④sqluldr2+bulk 32H=3H...
在[Oracle移行到Sqlserver完美解决案]③执行时间改善案bcp+bulk 一文中,移行实现了,但数据600多万件,占内存3G多的操作log表,移行需要32H,这个时间我们是无法接受的. 原 ...
- oracle中的left函数,Oracle Left Join
oracle函数 的 Oracle Left Join 在本教程中,您将学习如何使用Oracle LEFT JOIN子句来查询多个表中的数据. Oracle LEFT JOIN子句简介 以下语句说明连 ...
- 使用什么优化器_在机器学习项目中该如何选择优化器?
导读 几种流行的优化器的介绍以及优缺点分析,并给出了选择优化器的几点指南. 本文概述了计算机视觉.自然语言处理和机器学习中常用的优化器.此外,你会找到一个基于三个问题的指导方针,以帮助你的下一个机器学 ...
- php中include的作用,PHP 中关于 include() 函数的性能
简明现代魔法 -> PHP服务器脚本 -> PHP 中关于 include() 函数的性能 PHP 中关于 include() 函数的性能 2010-03-03 PHP程序员最常用的两个函 ...
- 简单介绍oracle执行计划,Oracle性能优化之oracle中常见的执行计划及其简单解释
一.访问表执行计划 1.table access full:全表扫描.它会访问表中的每一条记录(读取高水位线以内的每一个数据块). 2.table access by user rowid:输入源ro ...
最新文章
- hdu2371 矩阵乘法(求序列位置改变m次后的序列)
- Topaz Labs AI深度学习图像处理(Gigapixel、Video Enhance)
- 谱聚类、Chameleon聚类、PCCA、SOM、Affinity Propagation
- servlet请求和响应的过程
- (百度、谷歌)地图经纬度gps偏移解决办法:gps纠偏数据库纠偏
- python pygame鼠标点击_pygame系列_mouse鼠标事件
- 如何优雅地根治null值引起的Bug?!
- 软考历程(4)——安全问题之病毒
- 使用百度识图 完成图片识别和文字识别
- 实践致知第6享:QQ截图的文字识别功能
- id 查找apple,怎么查找我的apple id?
- wordpress批量导入html文章,wordpress文章采集发布批量上传教程(火车头)
- iOS 13 修改状态栏背景色
- 基于ResNet50网络的简单垃圾分类网络
- 界面今日头条:2018年中国旅游城市排行榜
- 判断一周中的某一天是否为工作日
- USB host 与 OTG 怎么切换
- 计算机的发展与什么息息相关,第一单元第二课《计算机的发展与应用》.doc
- ArcBlock ⑦ 月报 | Forge 框架升级更新 开发者社区建设如火如荼
- 表示所有字符的正则表达式html,JavaScript正则表达式介绍