将分页添加到数据库实体的(dotnet EntityFramework Core)表中,我想显示一条消息,例如“显示Z的项目X到Y”,其中Z是被分页表中项目的总数。 / p>
目前,我将writeAndFlush
中DbSet
的条目总数提取为DbContext
。
从好的方面来说,这是可行的(模块可以对dbContext.Things.Count()
的表进行持续的并行更新,但这对我来说足够接近了。)
另一方面,我担心它可能不是特别有效,即使它可能会尝试将项目加载到内存中。很明显,通过分页,我只需要加载少量项目来显示当前页面。
我的数据库是postgresql 9.5,可以通过Npsql访问。
所以我的问题是:有没有人知道这种方法有任何陷阱?
答案 0 :(得分:1)
事实证明,对于Postgres,Count
可能是O(n)
操作...... https://wiki.postgresql.org/wiki/Count_estimate
尝试here有一些技巧,其中涉及以产生估计和/或减慢写入的惩罚执行SQL。
我的这张表写得比阅读的频率高得多,所以暂时Count
暂时会做。{/ p>