如何提高NHibernate中的select性能

如何提高NHibernate中的select性能,nhibernate,linq-to-nhibernate,Nhibernate,Linq To Nhibernate,我需要从数据库中具体化大约20000条记录,并将其写入CSV。不幸的是,在NHibernate中,这些记录的具体化非常缓慢。有没有一个选项可以获取Nhibernate Linq Provider生成的SQL,或者编写自定义的具体化机制,以代替创建新对象将行写入流?如果您实际上只是从数据库读取数据并将数据写入CSV,而不更新任何记录,则可以使用无状态会话来加快速度 这篇博文 有一些关于批量操作的性能加速的信息。如果您实际上只是从数据库读取数据并写入CSV,而没有更新任何记录,则可以使用无状态会话

我需要从数据库中具体化大约20000条记录,并将其写入CSV。不幸的是,在NHibernate中,这些记录的具体化非常缓慢。有没有一个选项可以获取Nhibernate Linq Provider生成的SQL,或者编写自定义的具体化机制,以代替创建新对象将行写入流?

如果您实际上只是从数据库读取数据并将数据写入CSV,而不更新任何记录,则可以使用无状态会话来加快速度

这篇博文


有一些关于批量操作的性能加速的信息。

如果您实际上只是从数据库读取数据并写入CSV,而没有更新任何记录,则可以使用无状态会话来加速

这篇博文


有一些关于批量操作性能加速的信息。

您可能应该使用LINQ的select子句将加载的数据直接投影到某个DTO类型(或匿名类)。这将绕过NHibernate通常用于跟踪状态的所有操作。

您可能应该使用LINQ的select子句将加载的数据直接投影到某个DTO类型(或匿名类)。这将绕过NHiBiNess通常执行的跟踪状态。

您应该首先考虑使用像NHProf这样的工具(http://www.hibernatingrhinos.com/products/NHProf)检查NHibernate Linq提供程序生成的SQL查询

使用NHibernate不允许对它所依赖的SQL数据库进行完全抽象。如果查询涉及多个表或where标准,则需要考虑常见的SQL性能问题(即索引、要加入的列、子查询)


20000个记录对我来说似乎不多,所以你应该先看看那个方向。

你应该首先考虑使用像NHProf这样的工具。http://www.hibernatingrhinos.com/products/NHProf)检查NHibernate Linq提供程序生成的SQL查询

使用NHibernate不允许对它所依赖的SQL数据库进行完全抽象。如果查询涉及多个表或where标准,则需要考虑常见的SQL性能问题(即索引、要加入的列、子查询)


20000条记录对我来说并不多,所以你应该先看看这个方向。

顺便说一句,NHibernate(或任何ORM)并不是围绕批量操作设计的。如果您需要处理大量数据,您可能应该考虑NHibernate的其他选项。顺便说一句,NHibernate(或任何与此相关的ORM)并不是围绕批量操作设计的。如果你需要处理大量的数据,你可能应该寻找其他的方法来代替NHibernate。这是一个错误的工具。但是试试无状态会话。迭戈-你知道有什么工具可以从Linq生成SQL吗?这是一个错误的工具。但是试试无状态会话。迭戈-你知道有什么工具可以从Linq生成SQL吗?