我一直在从事一个相当大的C++项目,该项目出人意料地使用MS Access 97作为其底层数据库引擎。我注意到代码中有很多从查询创建记录集的实例,这些查询可能会返回超过100,000条记录。
我很好奇,当您构建记录集时,ADO是否会将所有数据都拉到内存中,或者当您试图从记录集中读取数据时,ADO是否更智能,并且只能“及时”加载数据?我们收到了很多来自客户的性能投诉,这在我看来是可疑的内疚。
(迁移到较新的数据库引擎在我们的路线图上。相信我,团队中没有人对访问权限感到满意)
发布于 2011-11-02 21:09:44
在这里使用Access访问数据库有几个问题:
发布于 2011-11-02 21:58:59
我很好奇,当您构建记录集时,ADO是否会将所有数据都拉到内存中,或者当您试图从记录集中读取数据时,ADO是否更智能,并且只能“及时”加载数据?
也许异步获取行可以改善您的用户体验。请参阅可与ADO Recordset Open Method一起使用的ExecuteOptionEnum中的选项。我怀疑这是你心目中的“及时”,但这是我能提供的最好的了。
在我看来,更好的设计是修改查询,只检索100K行中的一部分。那么“及时”可以变成“让用户请求下一个子集”。而且,您应该能够从具有合理大小的记录集的访问中获得良好的性能。
https://stackoverflow.com/questions/7980539
复制相似问题