我有一个选择(没什么复杂的)
Select * from VIEW
这个视图有大约 6000 条记录和大约 40 列。它来自 Lotus Notes SQL 数据库。所以我的 ODBC 驱动是 LotusNotesSQL 驱动。该查询大约需要 30 秒才能执行。我工作的公司使用EXCEL运行查询并将所有内容写入工作表。由于我假设它会逐个单元格地写入所有内容,因此过去最多需要 30 到 40 分钟才能完成。
然后我使用了 MS 访问。我在 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 人,而是 ac#,也许我会说服他们也使用 c#,但我主要是在寻找有关如何减少时间的建议。我已经将它从 40 分钟缩短到 10 分钟,但希望它在 2 分钟以内。
回顾一下:
查询大约需要 30 秒才能执行
在 Excel/Access 中本地使用查询大约需要 15 - 40 分钟
需要不到 2 分钟
可以使用基于 java 的解决方案
您可能会建议其他解决方案而不是 java。