【问题标题】:get all the records count and first 100 records in hibernate and mysql获取hibernate和mysql中的所有记录数和前100条记录
【发布时间】:2013-08-29 17:10:55
【问题描述】:

我正在使用服务器端分页。为此,我首先需要先显示前 100 条记录,然后在顶部显示按钮的数量。例如,我总共有 550 条记录,我需要在顶部显示 6 个按钮。当用户点击时在第二个按钮上,我需要检索 101 到 199 条记录。

为了获取我正在使用一个数据库调用的总记录并获取前 100 条记录,我正在使用另一个数据库调用。

我用的是hibernate,所以查询是这样的

 select model from TableName model where ................

   FirstResult = 0
   MaxResult = 100

并获得我正在使用的记录总数

   select count(*) from TableName model where ................

这里的问题是我正在运行类似的查询 2 次。 如何将这 2 个查询合二为一?

提前谢谢...

【问题讨论】:

  • 那么问题出在哪里?或者你想优化它?
  • 我需要合并到一个查询中

标签: java jquery mysql hibernate


【解决方案1】:

这不是同一个查询,但条件非常相似。用普通条件调用2个查询没有错。

【讨论】:

  • 有没有可能合并。如果查询得到少量数据,那么好的。但是他们得到大量数据。
  • select count(*) 仅返回 1 条记录。海量数据从何而来?
  • 对不起。我的意思是它会处理大量数据。
  • 解决方案之一是在这种情况下尽量避免计数或近似计算。
【解决方案2】:
SELECT *, (SELECT COUNT(*) FROM `TableName`) FROM `TableName`

有效,但有 2 个查询

(服务器版本:5.5.32-MariaDB-1~precise-log - mariadb.org 二进制分发版)

【讨论】:

    【解决方案3】:

    你可以在mysql中使用union http://dev.mysql.com/doc/refman/5.0/en/union.html

    这样组合 从 TableName 模型中选择模型,其中...... 联盟 从 TableName 模型中选择 count(*) ......

    但是你必须注意分离两个查询的结果

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-13
      • 2015-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-07
      • 1970-01-01
      相关资源
      最近更新 更多