Access大数据量操作,如何提高效率

iBox 2014-05-05 08:41:30
需求:
1、有两个表A,B。A表是存在MDB中的代码表。B表是存在MDB中的代码对应表。
2、将A表转成Excel,然后将表中所有的代码通过查找B表转成对应的汉字。
问题:
1、A表是一个5000多行,167列的表,通过遍历,效率很慢。慢到无法忍受。
2、通过遍历列名,利用SQL语句执行,搞得SQL语句太长。Access不支持。

请问大家有没有遇到过类似的情况,最后如何解决的?最好贴上代码,万分感谢
...全文
325 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
moonwrite 2014-05-05
  • 打赏
  • 举报
回复
5000多行 不是很多,整个一次性读到内存中,
jimil 2014-05-05
  • 打赏
  • 举报
回复
随便说几点,在不能换数据库的情况下: 1、数据结构修改,A表改成A1-10表,一表10来个列,通过一主键关联 2、如果数据是固定的,看看能不能通过划分新表来把行也划分出去。
wfy4422 2014-05-05
  • 打赏
  • 举报
回复
引用 4 楼 iTeChina 的回复:
[quote=引用 3 楼 wfy4422 的回复:] 最终转成的EXCEL要包含B表的汉字吗?那将A表和B表联合查,得到DataTable,再一起放到EXCEL里. SELECT * FROM A INNER JOIN B ON A.ID=B.ID 这样不行吗?可以在ID列建一下索引,提高速度。不过ACCESS本来效率就不高
最终就是要将A的代码转成汉字。然后生成Excel。这里还有个问题,就是查找不到代码的,要保留原来的数据[/quote] 假设B表的汉字列是Name,在SQL SERVER 里是可以这样写的:SELECT A.*,ISNULL(B.Name,A.ID) FROM A INNER JOIN B ON A.ID=B.ID。ACCESS里应该也有ISNULL或者类似的东西,也可能是IIF。得自己看看了。
iBox 2014-05-05
  • 打赏
  • 举报
回复
引用 3 楼 wfy4422 的回复:
最终转成的EXCEL要包含B表的汉字吗?那将A表和B表联合查,得到DataTable,再一起放到EXCEL里. SELECT * FROM A INNER JOIN B ON A.ID=B.ID 这样不行吗?可以在ID列建一下索引,提高速度。不过ACCESS本来效率就不高
最终就是要将A的代码转成汉字。然后生成Excel。这里还有个问题,就是查找不到代码的,要保留原来的数据
wfy4422 2014-05-05
  • 打赏
  • 举报
回复
最终转成的EXCEL要包含B表的汉字吗?那将A表和B表联合查,得到DataTable,再一起放到EXCEL里. SELECT * FROM A INNER JOIN B ON A.ID=B.ID 这样不行吗?可以在ID列建一下索引,提高速度。不过ACCESS本来效率就不高
iBox 2014-05-05
  • 打赏
  • 举报
回复
引用 1 楼 diaodiaop 的回复:
我的答案就是 换数据库...
换不了数据库,因为MDB数据库是ArcGIS的数据文件。 悲剧,最近遇到的问题都很棘手
by_封爱 版主 2014-05-05
  • 打赏
  • 举报
回复
我的答案就是 换数据库...

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧