我正在开发一个非常小规模的程序,主要是使用单词首字母来搜索完整的字符串和附加的额外信息,包括程序内 CRUD 操作。由于只有约 10k 个字符串要搜索,我更愿意使用内存方法来加快搜索速度(因为大多数查询是 SELECT
)。
简单地使用像 List<myobject> data
这样的东西是不是一个好方法?并做这样的事情:data.Where((s => s.text.Substring(0,3) == expected));
?当我使用这种方法时,我可以对数据库优化(如索引)做些什么吗?
最佳答案
长话短说
我建议评估您的要求。如果使用简单的 List<>
满足您的要求,并且您对分析应用程序的性能结果感到满意,然后使用它。如果不考虑使用内存数据库。
数据库检索数据速度足够快的主要原因之一是 Index .当您使用常见的 C# 数据结构时,您会错过此功能。我认为如果你处理的记录数量很少,那么你就不会遇到性能问题,但如果你有很多记录,那么你应该考虑使用 in memory databases . 请记住,所选数据库可能不支持您希望的数据索引方式,或者您有复杂的查询,而索引并不能提高它们的性能。
如果你只有键和相应的值,那么看看 Redis和 StackExchange.Redis .
要考虑的另一件事是并发性!数据库通常支持从多个线程访问数据,并处理同一数据的多个读取器或写入器。您可以使用 thread-safe collections in .NET但是您必须做很多工作才能获得内置于数据库中的功能。
关于c# - 使用内部数据结构作为内存数据库是一种好方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36905994/