对不起我的noob问题,我正在编写一个带有sqlite数据库的perl web应用程序.我希望能够在我的应用程序中显示可能获得数千行的查询结果 - 这些应该在页面中分割 - 路由应该像/ webapp/N - 其中N是页码.使用DBI查询sqlite数据库的正确方法是什么,以便仅获取相关行.
例如,如果我每页显示25行,那么我想在第一页中查询数据库1-25行,在第二页中查询26-50等....
使用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页面上有详细解释.
你应该做这样的事情:
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)
等等..
| 归档时间: |
|
| 查看次数: |
1787 次 |
| 最近记录: |