【问题标题】:Strategy for count when doing pagination分页时的计数策略
【发布时间】:2015-12-19 17:53:33
【问题描述】:

我有一个包含大约 4000 万条记录的表。 我正在对该表进行分页,每页偏移 10 条记录。 问题是我必须显示记录总数和页数(给定某些标准)。 SELECT COUNT 处理时间太长,大约 20 秒。 我有一个超时提示,但他没有解决问题,并且数据库(表)正在增长......

有人遇到这个问题吗?您实施的解决方案是什么?

我有索引并且查询已调整,问题是记录数...

我正在使用休眠 JPA、JAVA 和 jMesa 来显示带有分页的页面。

干杯,

【问题讨论】:

  • 也许是一个保存表格计数的视图?
  • 不显示。显示省略号 (...),或设置异步进程并在最终返回时显示它。

标签: java sql jpa pagination jmesa


【解决方案1】:

如果您使用的是 Oracle 数据库,并且如果表中行数的近似值足够,请尝试:

SELECT NUM_ROWS FROM USER_TABLES WHERE TABLE_NAME = 'YOUR_TABLE';

另一种选择是:

SELECT COUNT(*) * 100 FROM YOUR_TABLE SAMPLE BLOCK (1);

附录:

第一个查询的 SQLServer 等效项:

SELECT rows FROM sys.sysindexes WHERE id = OBJECT_ID('YOUR_TABLE') AND indid < 2

【讨论】:

  • 我正在使用 SQL Server,但我不相信使用 JPA 可以做到这一点。
  • 我不明白为什么您不能使用 JPA 访问目录表。
  • 好的,如果我想要表元数据,我可以这样做。我不,我想要的是基于表内的常驻数据的某些标准(业务标准)中的表计数基础。像这样:SELECT count(PK) from table where name = 'example'。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-07-18
  • 1970-01-01
  • 2010-10-29
  • 2010-12-14
  • 2012-12-28
  • 2016-04-03
  • 2020-10-25
相关资源
最近更新 更多