`
wsql
  • 浏览: 11789223 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

避免游标多次遍历

 
阅读更多
游标在数据库领域被广泛使用,尤其是对于需要将SQL语句返回的数据集进行逐行处理的时候。这为数据处理提供了极大的便利性,然游标的不当
使用从某种程度上而言会降低数据库的性能。下面的是一个来自生产环境的实际例子,由于使用了参数游标,所以引发了多次遍历。

一、源代码
二、代码改进
三、调整后结果比对
四、总结
1、参数游标从某种程度上而言,增加了游标的灵活性。即一次定义,多次调用。
2、对基于相同表使用参数游标将会导致对表对象的多次数据读取,增加了I/O开销。

3、尽可能的缩小数据中间结果集,如上面的获得最大的contract_num,由于生成的其唯一性,我们可以将搜索范围限制在一周或当天。


五、更多参考

启用用户进程跟踪

父游标、子游标及共享游标

绑定变量及其优缺点

dbms_xplan之display_cursor函数的使用

dbms_xplan之display函数的使用

执行计划中各字段各模块描述

使用 EXPLAIN PLAN 获取SQL语句执行计划

启用 AUTOTRACE 功能

函数使得索引列失效

Oracle 绑定变量窥探



分享到:
评论

相关推荐

    SQL Server游标遍历,并比较值

    在sql中,通过id查询出一个字段的值ordernumber,利用游标循环遍历对应字段的值ordernumber1,(比较ordernumber是否存在,存在就在后+'_1',+'_2'...)

    sql 游标遍历 实例

    sql游标遍历实例

    Mysql游标(循环操作)

    Mysql游标(循环操作)

    SQL避免游标循环

    SQL使用while循环 避免游标循环带来的消耗内存

    学习及练习PLSQL-游标遍历

    游标提供了一种对从表中检索出的数据进行操作的灵活手段,就本质而言,游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制。

    CN110543495A-游标遍历存储方法及装置.pdf

    CN110543495A-游标遍历存储方法及装置.pdf

    利用游标遍历数据表或者数据集

    declare cur cursor for select AccountID,EmployeeName from #Temp open cur fetch next from cur into @tmpID, @tmpName fetch next from cur into @tmpID, @tmpName end close cur ...

    我的第一次游标应用

    学习游标有一段时间了,也用过几次游标来解决问题,但是本次的应用让我更加深入的了解到游标的神奇!我写的这个程序是用在ERP系统中将库存分配到当天要出货的订单上,由于有订单不一定有库存,有库存的时候,当天不...

    DB2游标及动态SQL

    DB2游标及动态SQL,异常处理,sqlcode,sqlstate

    SQL Server遍历表中记录的2种方法(使用表变量和游标)

    本文将介绍利用使用表变量和游标实现数据库中表的遍历。 表变量来实现表的遍历 以下代码中,代码块之间的差异已经用灰色的背景标记。 代码如下: DECLARE @temp TABLE ( [id] INT IDENTITY(1, 1) , [Name] VARCHAR(10...

    关于游标的说明与使用方法

    什么是游标?游标有什么作用?Oracle游标的类型?Oracle游标的状态有哪些,怎么使用游标属性?如何使用显示游标,?如何遍历循环游标?

    .Net Oracle一次请求执行多条sql语句 Oracle批处理 使用游标一次执行多条Sql语句

    Oracle 一次请求执行多条sql语句 在.net 中查询Sql Server 一次请求执行多条sql语句很简单 拼接起来就好了 初次接触oracle 在网上寻找了很多方法终于被我解决了 我把问题想复杂了 例子中提供了2种解决方案 一种...

    游标操作多个数据库学习之用,游标操作多个数据库

    学习之用,游标操作多个数据库 学习之用,游标操作多个数据库 学习之用,游标操作多个数据库

    详解Mysql 游标的用法及其作用

    难道要执行2000多次?显然是不现实的;最终找到写一个存储过程然后通过循环来更新C表, 然而存储过程中的写法用的就是游标的形式。 【简介】 游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制...

    LabVIEW 的游标图例

    创建游标时,游标模式定义了游标位置,共有3种模式:自由、单曲线和多曲线,如图3所示。同一图形中可创建多个游标。  自由模式不考虑曲线的位置,游标可以在整个图形区域自由移动。  单曲线表示仅将游标置于与其...

    oracle解决游标多维度循环查询效率过低方案

    多维度查询时通常需要建立多个游标循环,查询效率无法得到保障,现在通过游标和substr()函数相结合的方式提高查询效率

    python for循环异常

    此前一直以为,执行for循环时,会把所有元素一次性放入循环体,后续不再动态的每一次都访问可迭代对象。 首先,我们来解析一下for循环的执行过程。执行for循环时,主要有一下三个步骤: 1)调用内置函数iter()函数...

    SQL Server如何通过创建临时表遍历更新数据详解

    好像并没有for和foreach这种类型的功能呀,不过关于数据库遍历最常见的方法当然是大家经常会想到的游标啦,但是这次我并没有使用游标,而是通过创建临时表的方式来更新遍历数据的。 为什么不使用游标,而使用创建...

    使用游标更新数据库

    使用游标更新数据库

    sql不用游标实现逐行处理

    sql不用游标实现逐行处理 一个Insert语句一次插入3行到某个表中。...第一反应可能是使用游标循环遍历Inserted表读取主键然后调用存储过程。但在这种情况我们可以使用一个技巧:变量以及动态SQL语言。

Global site tag (gtag.js) - Google Analytics