2.更进一步,由于循环访问数据库导致性能十分低下,是否可以先取出全集,到内存中进行比较,这里需要提醒的是使用HashSet或Dictionary判断是否存在比List性能要高
3.但当全集数据量极大的时候,这种做法可能会导致内存不足,接下来考虑是否能缩小提取的范围
4.提取原始数据时,直接只提取ID在需要比较的列表中,即selectidfromtablewhereidin(需要判断的id结果集),单数据提取到HashSet,kv的提取到Dictionary
5.提取出in条件的结果集后,与待比较的ID进行对比,取出的结果集中存在的ID,即是已存在的信息,不存在的,就是新增的ID
想更快更准确的替换,还是得用到SQL执行语句。方法之一:1 打开你的数据库MDB2 在数据库窗口中,点击“查询”,或在“视图”菜单中选择“数据库对象”->“查询”3 点击数据库窗口中的“新建”按钮4 点击“确定”,关闭“显示表”窗口5 点击工具栏左上侧的“SQL”,或在“视图”菜单中选择“SQL 视图”6 删掉所有的内容7 直接输入SQL语句(替换表as_info中字段n_content 中的""分号为空为例):update as_info SET n_content = replace(n_content,"","") 该方法对ACCESS 2000库无效。8 点击工具栏上“查询”-->“运行”即可。方法二:set Rs = Server.CreateObject("ADODB.Recordset") sql1="select n_content from as_info" rs.open sql1,conn,1,3 do while not rs.eof n_content=replace(rs("n_content"),"","") rs("n_content")=n_content rs.update rs.movenext loop rs.close set rs=nothing 方法三:批量替换工具点击下载此文件SQL 关键索引,在大表上创建索引
千万记录的表不算大,只要索引创建对了,性能可以正常提升,
还有一种就是比较偏的方式:先把需要批量的数据库插入临时表
这个可以防止频繁对表进行查询 *** 作,
SQL 如下:select * into #Temp from Table
后面就只需要对临时表 *** 作,不允许主表性能。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)