sql – 增加Ms Access Insert性能
|
我正在使用MS Access 2010,分为前端/后端;在具有16个表的网络驱动器(WAN)上,其中一个用户表(130万)主要用于用户信息,并且不会插入大量其他表,每天最多可以接收2000个表. 我已经能够优化大多数读/选查询.虽然我的代码中的一大块如下所示.这可以每天用于最多2000次迭代. Do Until rec.EOF
Dim vSomeId As Integer
vSomeId = rec!SomeId
'StrSQL = StrSQL & "INSERT INTO TransportationDetails ( TransportationId,SomeId)" & _
'"VALUES(" & vTransportationId & "," & vSomeId & ");"
StrSQL = "INSERT INTO TransportationDetails ( TransportationId,SomeId)" & _
"VALUES(" & vTransportationId & "," & vSomeId & ");"
DoCmd.SetWarnings False
DoCmd.RunSQL (StrSQL)
DoCmd.SetWarnings True
rec.Edit
rec!SomeBoolean = rec!SomeOtherBoolean
rec.Update
rec.MoveNext
Loop
我的目标是减少调用db以插入所有值的次数.并且MS ACCESS不支持在语句中具有多于1个查询,正如我在代码的注释部分中尝试的那样.我还认为记录集upate方法耗费大量时间,如果任何人可以建议更新记录集的更好方法. 有什么办法我可以欺骗Access插入&通过SQL查询或任何其他访问功能更新到db的更少命中.或者无论如何都要优化,有时可能需要长达30分钟.减少到至少2-5分钟是合适的. 附: 解: 解决方法如果你现在有S = "SELECT SomeId,SomeBoolean,SomeOtherBoolean " & _
"FROM recTable WHERE someCriteria"
Set rec = DB.OpenRecordset(S)
将你的陈述改为 "INSERT INTO TransportationDetails (TransportationId,SomeId) " & _ "SELECT " & vTransportationId & ",SomeId " & _ "FROM recTable WHERE someCriteria" 和 "UPDATE recTable SET SomeBoolean = SomeOtherBoolean WHERE someCriteria" 为了提高性能,请尽可能避免在Recordset上循环.使用对整个集合进行操作的SQL语句. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- sql server select查询添加自增长的列,作为标识列
- SQL Server 重温事务的简单示例
- 如何在SQL Server 2008中获取时间字段的总和
- sql 左连接和右连接的使用技巧(left join and right join)
- entity-framework – 首先在Entity框架代码中进行增量数据库
- SQL Server SQL中的left join right join
- sql – 为什么使用参数化查询将数据插入表中比将值附加到查
- SQL Server数据透视不知道结果列名?
- sql – 查找计数发生次数
- sql-server – SQL Server FOR XML PATH:在顶部设置xml-de
