C# 哪一个更好。。。内存搜索还是数据库访问?

C# 哪一个更好。。。内存搜索还是数据库访问?,c#,caching,search,web,C#,Caching,Search,Web,我们现在正在开发一个在线系统,我不知道什么时候使用内存搜索,什么时候使用数据库搜索。有人能帮我找出搜索记录时需要考虑的因素吗?这取决于记录的数量。如果记录的数量很小,那么最好将其保存在内存中,即缓存记录。此外,如果经常查询记录,则选择内存选项 但是如果记录数或记录大小太大,最好使用数据库搜索选项 基本上,这取决于服务器上有多少内存…一个因素是,如果需要反复查看相同的结果,请确保将它们缓存在内存中。当您使用LINQtoSQL或支持延迟执行的实体框架ORM时,这会成为一个问题 因此,如果您有一个IQ

我们现在正在开发一个在线系统,我不知道什么时候使用内存搜索,什么时候使用数据库搜索。有人能帮我找出搜索记录时需要考虑的因素吗?

这取决于记录的数量。如果记录的数量很小,那么最好将其保存在内存中,即缓存记录。此外,如果经常查询记录,则选择内存选项

但是如果记录数或记录大小太大,最好使用数据库搜索选项


基本上,这取决于服务器上有多少内存…

一个因素是,如果需要反复查看相同的结果,请确保将它们缓存在内存中。当您使用LINQtoSQL或支持延迟执行的实体框架ORM时,这会成为一个问题


因此,如果您有一个
IQueryable
需要多次检查,请确保在启动多个foreach循环之前使用
ToList()
将其具体化。

这取决于具体情况,尽管我通常更喜欢在内存中搜索(如果可能)

但是,这取决于上下文,例如,如果记录可以在一次搜索和另一次搜索之间更新,并且您需要在搜索时更新最新的记录,那么显然您需要数据库搜索

如果需要存储在内存中的记录集(数据表)的大小很大,最好直接在数据库上进行另一次搜索

然而,请注意,如果您可以并且性能非常重要,那么将数据加载到数据表并进行搜索,例如使用LINQ进行过滤可以提高搜索本身的性能

另一件需要记住的事情是数据库服务器的性能和应用程序服务器的性能:如果数据库服务器在搜索查询上足够快,那么您可能不需要在应用程序的内存中缓存,因此可以避免一步。请记住,内存中搜索的缓存将计算请求从数据库移动到应用程序服务器


对你的问题不可能有绝对的回答,它与你的背景有关

哦,我明白了,非常感谢你;还有其他问题。如果缓存,会增加复杂性。您需要提出w/a缓存失效和缓存刷新策略。取决于你是怎么做的,它最终可能会有很多代码。@ Esteban Araya——他正在谈论代码部分……阅读这个问题,关于把它记录在内存中或从数据库中访问它……Prayayraa,这个问题需要考虑的因素。代码复杂度(和维护成本)是一个重要的因素。@ Praya:在我看来,它是关于优化的,我们应该考虑到每一个观点,它可能是代码和搜索技术。谢谢你的回答,至少我有一个想法,缓存取决于情况。简言之:当要检索的记录不是太大时,最好使用缓存。。。但是,当要检索的记录经常被访问时,太大的数据不能放入数据表中,并且总是有更新,那么,最好进行数据库搜索。。是吗?是的,我建议你用数据库搜索做一些测试,如果性能好,你可以,如果性能是一个特权,你应该考虑内存中的方法…但是请记住我对答案的考虑。1+非常好的一点,我们中的许多人只有在需要结果时才忘记实际执行IQueryable或IEnumerable.ToList()或.SingleOrDefault()或FirstOrDefault()。这可能会因为太晚或太早而严重影响性能。