gpt4 book ai didi

sql - Recordset.Edit或Update sql vba语句更新最快的方法?

转载 作者:行者123 更新时间:2023-12-03 17:10:33 26 4
gpt4 key购买 nike

我最近遇到过vba更新语句,并且我一直在使用Recordset.EditRecordset.Update不仅编辑我现有的数据,而且要对其进行更新。

我想知道两者之间的区别:recordset.updateUpdate sql Vba语句。我认为他们都一样,但是我不知道哪个更有效以及为什么。

下面的示例代码:

'this is with sql update statement
dim someVar as string, anotherVar as String, cn As New ADODB.Connection

someVar = "someVar"
anotherVar = "anotherVar"

sqlS = "Update tableOfRec set columna = " &_
someVar & ", colunmb = " & anotherVar &_
" where columnc = 20";

cn.Execute stSQL

这是用于记录集(更新和编辑)的:

dim thisVar as String, someOthVar as String, rs as recordset 
thisVar = "thisVar"
someOthVar = "someOtherVar"


set rs = currentDb.openRecordset("select columna, columnb where columnc = 20")
do While not rs.EOF
rs.Edit
rs!columna = thisVar
rs!columnb = someOthvar
rs.update

rs.MoveNext
loop

最佳答案

就像您在注释中提到的那样,假定WHERE columnc = 20选择了1000多个行,执行UPDATE语句应该比遍历一个记录集并一次更新一个记录集要快得多。

后一种策略是RBAR(逐行扫描)方法。第一种策略是执行单个(有效)UPDATE,这是一种“基于集合”的方法。通常,基于集合的性能要比RBAR好。

但是,您的2个示例提出了其他问题。我的第一个建议是使用DAO而不是ADO执行您的UPDATE:

CurrentDb.Execute stSQL, dbFailonError

无论选择哪种策略,请确保为columnc编制索引。

关于sql - Recordset.Edit或Update sql vba语句更新最快的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30894045/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com