关于SQLITE 分页查询的疑问,请您指教!!!

shier2817 2014-02-27 10:23:25
limit offset 这个用法俺懂。。。
但是一般地我们查询并显示的时候,无论是浏览器还是显示的客户端,在所显示的表格都会提示用户:

当前页号/总页号 当前记录/总记录数

而总页号、总记录数,我只知道得用不带 limit offset 的语句才可以查询的到吧?

这也就意味着,我想分页的话,得先不分页查询一次取记录数量,然后再分页查询实际需要的数据,这不是反倒更降低效率和易用性了么???

如果我确实需要 总页号、总记录数,而我的SQLITE还要实现分页,那么最佳的做法是什么呢?

望不吝赐教,多谢!

补充一下:不要在回复里给一些有使用局限性的模块或类,我使用的方式是直接调用 sqlite3.dll 里面的函数来做的,因为我用的是易语言(这个您不知道没关系),但是不要给我一个C或JAVA什么的类,那样对我没意义。。。
...全文
486 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
86y 2016-08-18
  • 打赏
  • 举报
回复
select count(id)即可查询比你查询所有的字段要快吧 如果一个页面只有十条数据。你只要先查总数,然后再查10条数据就可以了。现在很多人这样做的!分页控制只需要接收 (当前页、总记录数量、每页数量)就可以了
LongRui888 2014-03-04
  • 打赏
  • 举报
回复
引用 6 楼 shier2817 的回复:
。。。。不是一个概念。。。。SQLITE中,有个 LIMIT OFFSET 子句: select * from 表 LIMIT 每页记录数 OFFSET 开始记录号 这样一句就可以实现很好的分页了。 可就是因为太简单了,而我要得到没分页的总记录以便提示用户:当前记录数/总记录数 或者是 当前页/总页数 的话,我想到的只有先不使用 LIMIT OFFSET 而用 COUNT(*) 查询下获取到总数,然后再使用 LIMIT OFFSET 来分页查询。。。 这不是不但没简单,反倒2次查询更降低效率了么。。。
这个不会的,那得看count(*)的效率,如果你建了索引,数据量在上千万条的时候,也是只需要1-2秒就嫩返回的。
「已注销」 2014-03-02
  • 打赏
  • 举报
回复
。。。。不是一个概念。。。。SQLITE中,有个 LIMIT OFFSET 子句: select * from 表 LIMIT 每页记录数 OFFSET 开始记录号 这样一句就可以实现很好的分页了。 可就是因为太简单了,而我要得到没分页的总记录以便提示用户:当前记录数/总记录数 或者是 当前页/总页数 的话,我想到的只有先不使用 LIMIT OFFSET 而用 COUNT(*) 查询下获取到总数,然后再使用 LIMIT OFFSET 来分页查询。。。 这不是不但没简单,反倒2次查询更降低效率了么。。。
LongRui888 2014-03-02
  • 打赏
  • 举报
回复
这个是sql server中的分页,不知道适不适合sqlite:
declare @page_size int;
declare @page_num int;

--比如:每页10条记录
set @page_size = 10;

--比如:先取第1页
set @page_num = 1;

select *
from
(
select *,   
       
       (row_number() over(order by @@servername) - 1) / @page_size as pagenum
from sys.objects
)t
where pagenum = @page_num - 1
LongRui888 2014-03-02
  • 打赏
  • 举报
回复
这个sqllite我也不太明白,只会sql server的分页。。。
「已注销」 2014-03-02
  • 打赏
  • 举报
回复
移动一下板块,看看是否有前辈可以指点!
「已注销」 2014-03-01
  • 打赏
  • 举报
回复
知道的前辈帮帮忙啊!!!
「已注销」 2014-02-28
  • 打赏
  • 举报
回复
没有人可以回答下么?

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧