我一直在尝试为我们的表创建基于php的基于Web的分页 有超过一百万行。
根据我所读到的内容,我有3个选项
现在我正试图让选项3工作。 我把第一页显示为 “通过acct fetch前10行仅从accout命令中选择*” 第二页 “通过acct fetch从acct>(最后记录)的帐户中选择* 前10只“ 页面最后记录 “select * from account where acct =(select account(acct)from account)”
问题是显示上一页,我真的很感激 帮忙。
答案 0 :(得分:4)
SELECT *
FROM (
SELECT
*,
ROW_NUMBER() OVER (ORDER BY acct) AS RowNum
FROM
account
) AS Data
WHERE
RowNum BETWEEN 100 AND 110;
首先,你应该摆脱SELECT *
。只选择您需要的字段。
在acct
上放置索引,这有助于ROW_NUMBER() OVER (ORDER BY acct)
构建。
使用SELECT COUNT(*) FROM account
确定您将拥有的页数。
另请阅读Fastest most/efficient way to do pagination with SQL searching DB2
答案 1 :(得分:0)
DB2 10+支持LIMIT..OFFSET解决方案。对于旧版本,您必须启用MySQL兼容性:
$ db2set DB2_COMPATIBILITY_VECTOR=MYS
$ db2stop
$ db2start
db2cmd中的以使用该语法。
答案 2 :(得分:-1)
SELECT * FROM foo LIMIT 10, 1;
尝试mysql中的限制和偏移..
这主要用于创建分页