我有一个选择(没什么复杂的)
Select * from VIEW
该视图大约有 6000 条记录和大约 40 列。它来自 Lotus Notes SQL 数据库。所以我的 ODBC 驱动程序是 LotusNotesSQL 驱动程序。执行该查询大约需要 30 秒。我工作的公司使用过EXCEL运行查询并将所有内容写入工作表。由于我假设它会逐个单元地写入所有内容,因此过去需要 30 - 40 分钟才能完成。
然后我使用了MS access。我在 Access 上创建了一个副本本地表来存储数据。我的第一次尝试是
INSERT INTO COLUMNS OF LOCAL TABLE
FROM (SELECT * FROM VIEW)
请注意,这是伪代码。运行成功,但又花费了 20 - 30 分钟。然后,我使用 VBA 循环遍历数据并为每个单独的记录手动插入数据(使用 INSERT 语句)。这大约需要 10 - 15 分钟。这是我迄今为止最好的案例。
之后我需要做什么:获得数据后,我需要按部门对其进行过滤。问题是,如果我在 SQL 查询中放置一个 where 子句(执行查询的时间从 30 秒跳到大约 10 分钟+写入本地表/excel 的时间)。我不知道为什么。也许是因为这些列都是文本列?
如果我们将某些列更改为整数,就 where 子句而言,这会使其更快吗?
我正在寻找有关如何解决此问题的建议。我的老板说我们可以采用一些基于 Java 的解决方案。这会有帮助吗?我不是java人,而是c#人,也许我会说服他们也使用c#,但我主要寻找有关如何减少时间的建议。我已经将它从 40 分钟缩短到 10 分钟,但他们希望它在 2 分钟以内。
只是回顾一下:
查询执行大约需要 30 秒
在 Excel/Access 本地使用查询大约需要 15 - 40 分钟
需要在 2 分钟内完成
可以使用基于java的解决方案
您可能会建议其他解决方案而不是java。
您是否尝试过使用批量查询?本周早些时候,我在使用 C# 时也遇到了同样的问题;我必须插入大约 25000 条记录,大约花了 30 分钟。改用批量插入可将时间缩短至约 5 秒。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)