早上好,
目前我需要一些比数据库问题更有经验的人提供帮助。我需要使用两组(String,Int32)对。第一个有大约160,000对,第二个有大约1,620,000对。问题是最后一个集合的字符串的每个部分都包含在第一个集合中...就是这样,我想通过实现三个字典来模拟RAM内存中的数据库:
Dictionary<String, Int32>
存储一个字符串,类似于它的“主键”,
Dictionary<Int32, Int32>
将每个主键连接到所需的值
Dictionary<Tuple<Int32, Int32>, Int32>
存储一对主键和另一个值。
使用两个字典并存储冗余信息,程序分配大约200Mb的RAM。虽然这不是一个关键问题,但我想减少它。所以我尝试使用上面的三个词典,并且,正如我所料,分配的内存减少了很多,大约90Mb。但是,通过字符串搜索时的查找性能降低了,大约是第一个更简单但冗余的方法所花费时间的两倍。
所以现在我正在考虑将其实现为SQLite数据库。问题是查找时间:它应该尽可能快。使用这种数据库是否有可能获得类似于RAM访问时间的查找时间?
非常感谢。
答案 0 :(得分:0)
可能。你的RAM数据库不能处理任何纯粹的比较,因为它没有索引结构。到目前为止你没有给出任何搜索时间....可能正确使用一两个索引你可以很好地打败你的字典时间。 LOT在这里取决于RAM中的特定查询行为和查询执行时间。没有这些信息,我们可以说不多。
通常,特定数据结构也可以比通用数据库快得多。但它们的灵活性较低。真的取决于你在这里检索数据的方式。