2011-05-27 76 views
0

我想从一个表中获取非常大的数据。 我正在使用Java Webobject和EOmodel。 虽然我正尝试使用索引列进行读取,但我能够在不到2秒的时间内得到结果。但是当我试图用其他列进行搜索时,它几乎需要30+秒。 通过EOmodel打的查询,我直接用JDBC独立打印,它在1.5秒内获取结果。有关使用EO模型优化查询的任何建议?

任何在fetch规范中设置任何标志以便快速获取结果的建议。

感谢提前:)

回答

1

是什么由生成的SQL的差别EOF取指令相比,你JDBC的获取?

结果中有多少项? (如果有数十个,那么时间可能会从原始SQL结果转换为EOEnterpriseObjects)。

在您的EOFetchSpecification上尝试setFetchesRawRows(true),如果结果集很大,可能会给您一个与JDBC提取类似的结果。最后,如果您在数据库上启用了缓存,并且为了进行比较而在EOF提取后运行了JDBC提取,则JDBC提取可能只是从SQL缓存中获取缓存的结果。底线,你没有提供足够的信息给任何人提供真正有针对性的建议。

+0

我在SQL提取和JDBC提取中所做的唯一区别就是日期格式。在SQL提取我给 – neo 2011-05-27 14:04:41

+0

感谢您的帮助:)只有差异我在SQL提取和JDBC提取是日期格式。在SQL提取我给'dd-MMM-yyyy'日期和在EO生成的查询我传递日期对象它将转换为'星期五5月27日00:00:00 PDT 2011'日期格式。确认时间仅用于设置实体我从plist的类属性和实体类中删除除两个以外的所有列。仍然需要30-40秒。有没有办法从rawrows中获取实体对象。我试着打击粗鲁。其快速近2秒。 – neo 2011-05-27 14:15:14

+0

我会尝试不同的提取与JDBC确认是真正的缓存。 – neo 2011-05-27 14:17:40