C# 冗余字典、模拟数据库还是物理数据库?

C# 冗余字典、模拟数据库还是物理数据库?,c#,database,sqlite,C#,Database,Sqlite,早上好 目前,我需要比我更有数据库问题经验的人的帮助。我需要使用两组(String,Int32)对。第一个大约有16万对,第二个大约有162万对。问题是最后一个集合字符串的每个部分都包含在第一个集合中。。。也就是说,我考虑通过实现三个字典在RAM内存中模拟数据库: Dictionary存储字符串和类似“主键”的内容, 字典将每个主键连接到所需的值 字典存储一对主键和另一个值 使用两个字典并存储冗余信息,程序分配了大约200Mb的RAM。虽然这不是一个关键问题,但我想减少它。所以我试着使用上面的三

早上好

目前,我需要比我更有数据库问题经验的人的帮助。我需要使用两组(String,Int32)对。第一个大约有16万对,第二个大约有162万对。问题是最后一个集合字符串的每个部分都包含在第一个集合中。。。也就是说,我考虑通过实现三个字典在RAM内存中模拟数据库:

Dictionary
存储字符串和类似“主键”的内容,
字典
将每个主键连接到所需的值
字典
存储一对主键和另一个值

使用两个字典并存储冗余信息,程序分配了大约200Mb的RAM。虽然这不是一个关键问题,但我想减少它。所以我试着使用上面的三个字典,正如我所料,分配的内存减少了很多,大约为90Mb。但是,按字符串搜索时的查找性能降低,大约是第一种更简单但冗余的方法的两倍

所以现在我考虑将其实现为一个SQLite数据库。问题是查找时间:它应该尽可能快。使用这种数据库,是否有可能获得类似于RAM访问时间的查找时间


非常感谢。

可能吧。您的RAM数据库不处理任何精简的gbut纯比较,因为它没有索引结构。到目前为止,您没有给出任何搜索时间。。。。这可能是由于适当地使用一两个索引,你可以很好地击败你的字典时间。这很大程度上取决于RAM中的特定查询行为和查询执行时间。没有这些信息,我们就没有什么可说的了

一般来说,特定的数据结构也比一般的数据库快得多。不过,它们的灵活性较低。这取决于您在这里检索数据的方式