如何使用Postgresql中的NHibernate返回估计的行数

时间:2013-01-25 12:50:44

标签: nhibernate queryover rowcount

目前我正在使用NHibernate TransformToRowCount函数来获取查询的行数。当公司表行数达到1000万行甚至更多时,这种方法太慢而且资源密集。需要注意的是,我使用分页,因此在大多数情况下实际返回的行数为10,但总计数将为1000万或更多。

我想要做的是使用Postgresql wiki http://wiki.postgresql.org/wiki/Count_estimate中的count_estimate函数而不是TransformToRowCount。

我的问题是如何以类似的方式使用NHibernate调用count_estimates,我可以使用TransformToRowCount。

当前代码(有效,但很慢)。

var query = session.QueryOver<Company>();

FilterOnCompanyName('test', query);

query.Skip((pageNumber - 1) * numberOfItems).Take(numberOfItems).Future<Company>();

ICriteria rowCountCriteria = CriteriaTransformer.TransformToRowCount(query.UnderlyingCriteria);

int totalCount = rowCountCriteria.FutureValue<int>().Value;

IList<Company> companies = query.List<Company>();

上面的代码生成以下sql查询

select * from company where name = 'test' limit 10;
select (*) from company where name = 'test';

我希望它能生成类似这样的东西

select * from company where name = 'test' limit 10;
select count_estimate('select * from company where name=''test''');

提前致谢

0 个答案:

没有答案