知识大全 实践证明在数据库中使用游标效果会更好

Posted 语句

篇首语:眼前多少难甘事,自古男儿当自强。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 实践证明在数据库中使用游标效果会更好相关的知识,希望对你有一定的参考价值。

  在数据库中有两个表 一个比较巨大 大约 千万条记录(表Big) 另一个只有 条(表small)

  目前需要根据表small来更新表Big

  UPDATE Big SET Bf = WHERE BigId IN(SELECT BigId FROM Small WHERE Sf > )

  但是这样执行下来 速度非常慢 并且连接使用这台DB服务器的程序也都慢了下来 几近不可用

  仔细分析这条SQL语句 使用了IN 有人说IN是会分拆成一个个OR表达式的 而OR语句将不会使用索引 所以有时候遇到OR 会用UNION ALL来代替

  但在这里用UNION ALL是不行的

  根据笔者的猜想 这条SQL语句大概会用上全表搜索 大表 千万条记录 那么至少比较 千万次 怎么会不慢呢

  于是选择改用游标 先将小表的记录提取出来 然后一条条的跟大表结合执行

  DECLARE curT CURSOR FOR SELECT BigId FROM Small WHERE Sf > ;  DECLARE @Id INT;  OPEN curT;  FETCH NEXT FROM curT INTO @Id;  WHILE @@FETCH_STATUS =   BEGIN  UPDATE Big SET Bf = WHERE BigId=@BigId;  FETCH NEXT FROM curT INTO @Id;  END  CLOSE curT;  DEALLOCATE curT;

  这样游标里的记录数量最多也只会有 条 BidId在大表里又有索引 分成 次执行 虽然在连接编译时花了一些时间 但与恐怖的巨大表全表搜索比较 是微乎其微

cha138/Article/program/SQL/201311/16209

相关参考

知识大全 在PL/SQL中使用游标获取数据

Oracle数据库编程:在PL/SQL中使用游标获取数据  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下

知识大全 深入讲解游标类型为什么会产生数据检索[2]

  在定义此类游标的情况下S锁是必须下的NOLOCK提示并不会起作用此现象通过查询游标OPEN时的sp_lock信息就可以观察得到它产生了IS和S锁  而NOLOCK提示是否起作用会影响的执行的结果(

知识大全 oracle中ora-0100错误打开游标过大的解决

  最近做项目碰到ORA错误参考了一些解决办法把自己解决问题的一些心得写下来java访问oracle数据库在for循环代码中如果忽略关闭createstatment或preparedstatement

知识大全 用一个实例讲解DB2数据库游标循环的问题

用一个实例讲解DB2数据库游标循环的问题  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  本文中的

知识大全 oracle中的游标使用静态游标

  游标是构建在PL/SQL中用来查询数据获取记录集的指针它让开发者一次访问结果集中一行记录  在oracle中提供了两种游标静态游标ref游标  静态游标静态游标是在编译的时候就被确定然后把结果集复

知识大全 Oracle数据库游标的类型

Oracle数据库游标的类型  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  游标是SQL的一个内

知识大全 快速掌握Oracle数据库游标的使用方法

快速掌握Oracle数据库游标的使用方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  显式游标

知识大全 Oracle数据库游标使用大全

Oracle数据库游标使用大全  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  SQL是用于访问O

知识大全 如何删除数据库中的冗余数据(2)

  它将冗余数据选择到一个游标中并根据(LastNameFirstName)来分组(在我们这个方案中)然后打开游标然后循环地取出每一行然后用与先前的取出的键值进行比较如果这是第一次取出这个值或者这个值

知识大全 实例讲解如何正确使用数据库游标

  在下面的示例中表className中有如下分类  具体示例  classIDclassName  衣服  裤子  帽子  鞋子  表productInfo有如下记录  productIDprodu