javascript - 使分页与其计数一起工作

标签 javascript mysql node.js web paginator

我有一个关于如何在以 mysql 作为数据库的服务器端进行分页的问题。我已经弄清楚了其中的大部分,并且工作得很好,但我在想有没有办法消除计数查询。假设用户搜索单词 jack,结果计数为 25,每页 10 个分页。我的分页器需要知道所有行的数量才能在分页器中显示正确的数量。所以我现在的做法是首先使用这样的 sql 查询来计算符合该条件的所有行数:

"SELECT COUNT(id) AS count FROM " + table + query

然后我对这样的数据库执行另一个查询,它使用 LIMIT 和 OFFSET 选项来获得确切的页面:

"SELECT * FROM " + table + query + " LIMIT ? OFFSET ?"

然后我返回两个对象给客户端。首先是所有行的计数和用户现在需要查看的行的秒数。我的问题是这是最有效的方法还是有更好的方法?

最佳答案

您可以通过一个查询实现这一点,但它会对输出数据造成负担,例如,如果您限制 1000 条记录,则 total_records 将显示结果集中所有行的 1000 次。但同时,它会减少1次查询:

SELECT 
  column1,
  column2,
  column3,
  (SELECT COUNT(id) FROM `table`) AS total_records 
FROM
  `table` 
LIMIT 0, 10 

关于javascript - 使分页与其计数一起工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51243610/

相关文章:

javascript - fadeToggle() 与纯 javascript(无 jQuery)

javascript - Webpack css-loader 没有构建

php - 我可以在匹配时将一个表的输出值替换为另一表的值吗?

javascript - 是否可以从 powerpoint 中提取幻灯片并使用 node.js 将它们保存为图像?

javascript - 动态加载 Angular Controller

javascript - 在 javascript 认为文档为 "ready"之前,如何让我的 jasmine 测试装置加载?

mysql - 如何在MySQL中搜索带有H的名字?

mysql - 需要复杂的 MySql 查询帮助

javascript - React 15 与 React-redux 不兼容

node.js - Stormpath 集成,ExpressJS 'Stormpath 401Authentication with Vaild API Key is required'