如何查询某些行的sqlite,即将其划分为页面(perl DBI)

use*_*641 5 sqlite perl dbi

对不起我的noob问题,我正在编写一个带有sqlite数据库的perl web应用程序.我希望能够在我的应用程序中显示可能获得数千行的查询结果 - 这些应该在页面中分割 - 路由应该像/ webapp/N - 其中N是页码.使用DBI查询sqlite数据库的正确方法是什么,以便仅获取相关行.

例如,如果我每页显示25行,那么我想在第一页中查询数据库1-25行,在第二页中查询26-50等....

CL.*_*CL. 6

使用LIMIT/ OFFSETconstruction将显示页面,但是OFFSET使查询效率低下,并且在数据更改时使页面内容移开.

如果下一页在最后一页结束的位置开始查询,则效率更高且更一致,如下所示:

SELECT *
FROM mytable
ORDER BY mycolumn
WHERE mycolumn > :lastvalue
LIMIT 25
Run Code Online (Sandbox Code Playgroud)

这意味着你的链接是不是/webapp?Page=N,但/webapp?StartAfter=LastKey.

这在Scrolling Cursor页面上有详细解释.


riz*_*oro 3

你应该做这样的事情:

SELECT column FROM table ORDER BY somethingelse LIMIT 0, 25
Run Code Online (Sandbox Code Playgroud)

当用户点击第 2 页时,您应该执行以下操作:

SELECT column FROM table ORDER BY somethingelse LIMIT 25, 50
Run Code Online (Sandbox Code Playgroud)

等等..