使用游标会更好
左直拳
有两个表,一个比较巨大,大约1千万条记录(表Big),另一个只有5000条(表small)。
现在需要根据表small来更新表Big。
UPDATE Big SET Bf1=0 WHERE BigId IN(SELECT BigId FROM Small WHERE Sf1>0)
但是这样执行下来,速度非常慢,并且连接使用这台DB服务器的程序也都慢了下来,几近不可用。
分析这条SQL语句,使用了IN。据说IN是会分拆成一个个OR表达式的,而OR语句将不会使用索引,所以有时候遇到OR,会用UNION ALL来代替。
当然在这里用UNION ALL是不行的。
这样我猜这条SQL语句,大概会用上全表搜索,大表1千万条记录,那么至少比较1千万次,怎么会不慢呢。
于是改用游标,先将小表的记录提取出来,然后一条条的跟大表结合执行。
DECLARE curT CURSOR FOR SELECT BigId FROM Small WHERE Sf1>0;
DECLARE @Id INT;
OPEN curT;
FETCH NEXT FROM curT INTO @Id;
WHILE @@FETCH_STATUS = 0
BEGIN
UPDATE Big SET Bf1=0 WHERE BigId=@BigId;
FETCH NEXT FROM curT INTO @Id;
END
CLOSE curT;
DEALLOCATE curT;
这样游标里的记录数量充其量也只有5000条,BidId在大表里又有索引,分成5000次执行,虽然连接,编译花了一点时间,但与恐怖的巨大表全表搜索比较,实在算不了什么。
事实证明,以上语句在大约4分钟执行完毕,期间使用此数据库的应用程序不受影响,速度很快。
分享到:
相关推荐
Oracle 数据库游标的使用方法 Oracle 数据库游标是指在查询返回结果超过一行时,需要使用的显式游标。...Oracle 数据库游标是处理多行查询结果的重要工具,开发者需要掌握游标的使用方法,以便更好地处理数据。
### 关于游标的说明与使用方法 #### 一、什么是游标? 在数据库技术中,**游标**是一种用于检索查询结果集中的数据的方式。它允许用户逐行处理记录集,而不是...希望本文能够帮助您更好地理解和掌握游标的使用技巧。
游标卡尺的使用 游标卡尺是一种常用的测量工具,广泛应用于机械制造、工程设计、建筑施工等领域。下面我们将详细介绍游标卡尺的构造、使用规则、分类、测量...这些读数练习可以帮助我们更好地掌握游标卡尺的使用技巧。
### SQL游标使用详解 #### 一、游标概述 在深入探讨SQL游标的使用之前,我们先来了解一下什么是游标。...然而,需要注意的是,游标的使用也会带来一定的性能开销,因此在实际应用中应当谨慎选择是否使用游标。
Oracle游标是PL/SQL编程中的重要组成部分,主要用于处理单行或多行查询结果。...通过理解%TYPE属性,可以更好地适应数据库结构的变化。同时,熟练掌握DML语句的使用,可以方便地进行数据的增删改查操作。
在SQL编程中,游标(Cursor)是一种非常重要的工具,它允许我们按需逐行处理结果集,这...通过阅读和实践上游水位年报查询.txt、龙摆尾(坚行).sql.txt和游标实例.sql.txt中的示例,相信你能更好地理解游标的运用。
它们提高了性能,提供了更好的安全性和可维护性。在VB中调用存储过程如下: ```vb Dim cmd As New ADODB.Command cmd.ActiveConnection = conn cmd.CommandType = adCmdStoredProc cmd.CommandText = "usp_...
本资源集合了游标卡尺的使用技巧和应用实例,旨在帮助用户更有效地掌握这一工具。 游标卡尺的基本构造包括主尺和副尺(即游标),它们的精确配合使得读数可以达到较高的精度。主尺上的每个大格代表1毫米,而副尺则...
对于需要遍历大量数据或进行复杂数据操作的场景,使用明确游标是一个很好的选择;而对于简单的单行数据更新,则可以利用隐式游标来简化代码实现。掌握这两种游标的使用方法,将有助于提高Oracle应用程序的效率和可...
### 数据库游标使用详解:Oracle数据库视角 在数据库领域,游标(Cursor)是一种用于处理数据查询结果集的强大...希望本文能够帮助读者更好地理解游标的概念和应用,激发大家在实际项目中探索和实践游标技术的兴趣。
以上只是对Oracle游标使用的一个简要概述,具体到《Oracle 游标使用大全》这份文档,可能会包含更详尽的示例、技巧和案例,帮助开发者更好地理解和运用Oracle游标。通过学习和实践,我们可以提升数据库操作的效率和...
Oracle数据库游标是数据库编程中的一个重要概念,尤其在处理大量数据时,它们提供了一种有效且灵活的方法。...通过学习和实践这些知识,开发者能够更好地掌握Oracle数据库编程,提升数据库管理效率。
"Oracle存储过程游标详解" Oracle 存储过程游标是指在 Oracle 数据库中使用游标来实现对结果集的处理和操作。...它可以帮助开发者更好地处理和操作结果集,但需要注意避免使用游标的场景和正确使用游标的方法。
SQL Server 中创建和使用动态游标的技术要点 在 SQL Server 中,创建和使用动态游标是一种高效的数据处理方式。本文将详细介绍如何创建和使用...通过掌握相关技术要点,我们可以更好地应用动态游标来解决实际问题。
### Oracle游标使用及实例详解 #### 一、Oracle游标概述 在Oracle数据库中,游标(Cursor)是一种用于处理SQL查询结果集的方式。...希望这些知识点能够帮助你在实际工作中更好地利用Oracle游标功能。
在数据库开发中,当我们需要检索数据时,通常会使用`SELECT`语句。但在某些情况下,我们需要从查询结果集中逐条读取记录,这时就需要用到游标。本文将详细介绍SQL游标的原理及其使用方法。 #### 二、游标的基本概念...
课件“游标卡尺使用课件.exe”可能包含交互式的动画和实例,帮助学习者更好地理解和掌握这两种测量工具的使用技巧。同时,“说明.htm”文件可能是关于课件的使用指南或者更详细的理论介绍。通过这个课件,你可以系统...
### SQL游标使用详解 #### 一、引言 在SQL编程中,游标是一种用于处理...例如,使用`WHILE NOT EOF`这样的结构在某些数据库系统中可能会更优。总之,合理选择和使用游标可以显著提高数据库应用程序的性能和灵活性。
2. **打开游标**:使用`OPEN`命令来打开游标,使它准备好读取数据。 3. **获取数据**:通过`FETCH`命令从游标中获取一行数据到声明的变量中。 4. **处理数据**:在获取数据后,可以根据实际需求对数据进行各种处理。...