【发布时间】:2010-10-28 09:41:41
【问题描述】:
早上好,
目前,我需要一些比我更有经验的数据库问题的帮助。我需要使用两组 (String, Int32) 对。第一个有大约 160,000 对,第二个有大约 1,620,000 对。问题是最后一个集合的字符串的每个部分都包含在第一个集合中......也就是说,我考虑通过实现三个字典来模拟 RAM 内存中的数据库:
Dictionary<String, Int32> 存储一个字符串和类似它的“主键”,
Dictionary<Int32, Int32> 将每个主键连接到所需的值
Dictionary<Tuple<Int32, Int32>, Int32> 存储一对主键和另一个值。
使用两个字典并存储冗余信息,程序分配了大约 200Mb 的 RAM。虽然这不是一个关键问题,但我想减少它。所以我尝试使用上面的三个字典,正如我所料,分配的内存减少了很多,大约 90Mb。但是,按字符串搜索时的查找性能降低了,所用时间大约是第一种更简单但冗余的方法的两倍。
所以现在我正在考虑将其实现为 SQLite 数据库。问题是查找时间:它应该尽可能快。使用这种数据库是否有可能获得类似于 RAM 访问时间的查找时间?
非常感谢。
【问题讨论】: