我可以选择(从无到有)
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秒才能执行
查询大约需要15-40分钟才能在Excel / Access中本地使用
2分钟内需要
可以使用基于Java的解决方案
您可能会建议其他解决方案,而不是Java。
您是否尝试过使用批量查询?我在本周早些时候使用C#遇到了同样的问题;我不得不插入大约25000条记录,这花了大约30分钟。换成大块插入物可将其缩短至约5秒钟。