C# 能否将LINQ与内存中的对象而不是SQL Server查询一起使用以提高性能?

C# 能否将LINQ与内存中的对象而不是SQL Server查询一起使用以提高性能?,c#,sql,linq,C#,Sql,Linq,我们一直在开发一个DB web应用程序,它不断地查询对象的SQL存储(大约80000个),这些对象在层次结构中相互关联。(即,许多对象具有与同一表中的另一个对象相关的parentid) 我一直认为,将整个对象树加载到内存中并使用LINQ查询对象可能是一种更好的方法。这些物体大多为1-5公里 有人有什么想法吗 “LINQ”包括LINQ到对象、LINQ到SQL等。您当然可以在内存中进行查询,但也许您应该等到完成性能分析后再进行优化。您可能优化了错误的东西。特别地,将多达250兆字节的数据加载到客户端

我们一直在开发一个DB web应用程序,它不断地查询对象的SQL存储(大约80000个),这些对象在层次结构中相互关联。(即,许多对象具有与同一表中的另一个对象相关的parentid)

我一直认为,将整个对象树加载到内存中并使用LINQ查询对象可能是一种更好的方法。这些物体大多为1-5公里


有人有什么想法吗

“LINQ”包括LINQ到对象、LINQ到SQL等。您当然可以在内存中进行查询,但也许您应该等到完成性能分析后再进行优化。您可能优化了错误的东西。

特别地,将多达250兆字节的数据加载到客户端内存似乎不是一个好主意。如果您有它的内存,您可以使用LINQ对象和保存数据库往返

问题是您的数据是分层的,您必须获取一行,检查它,然后检索相关的行,这会导致很多往返

您可以在程序运行期间使用延迟加载将越来越多的行检索到客户机内存中,并在工作集稳定时在内存中执行越来越多的查询。但这只有在行被多次访问而不是一次或两次访问时才有帮助

另一种解决方案可能是使用公共表表达式创建递归视图或存储过程,该表达式从给定行检索相关行