当前位置: 首页 > 编程笔记 >

PostgreSQL 分页查询时间的2种比较方法小结

许嘉福
2023-03-14
本文向大家介绍PostgreSQL 分页查询时间的2种比较方法小结,包括了PostgreSQL 分页查询时间的2种比较方法小结的使用技巧和注意事项,需要的朋友参考一下

数据库中存了3000W条数据,两种分页查询测试时间

第一种

SELECT * FROM test_table WHERE i_id> 1000 limit 100;

Time: 0.016s

第二种

SELECT * FROM test_table limit 100 OFFSET 1000;

Time: 0.003s

第一种

SELECT * FROM test_table WHERE i_id> 10000 limit 100;

Time: 0.004s

第二种

SELECT * FROM test_table limit 100 OFFSET 10000;

Time: 0.508s

第一种:

SELECT * FROM test_table WHERE i_id> 100000 limit 100;

Time: 0.003s

第二种:

SELECT * FROM test_table limit 100 OFFSET 100000;

Time: 2.377s
SELECT * FROM test_table WHERE c_act='登录' limit 100 OFFSET 100000;

Time: 3.649s

第一种:

SELECT * FROM test_table WHERE i_id> 1000000 limit 100;

Time: 0.004s

第二种:

SELECT * FROM test_table limit 100 OFFSET 1000000;

Time: 14.403s

第一种:

SELECT * FROM test_table WHERE i_id> 10000000 limit 100;

Time: 0.057s

第二种:

失去等待出来结果的耐心!!!

建议使用第一种分页方法~

补充:postgreSQL数据库limit分页、排序

limit分页语法:

select * from persons limit A offset B;

解释:

A就是你需要显示多少行;

B就是查询的起点位置。

示例

select * from persons limit 5 offset 0 ;

意思是,起点0开始查询,返回5条数据。

select * from persons limit 15 offset 5 ;

意思是,起点5开始查询,返回15条数据。

特殊:

select * from persons limit 5 ;

这个就类似:

select * from persons limit 5 offset 0;

也就是,从起点0开始查询,返回5条数据

按规则排序,同时也要分页:

select * from persons order by lastname limit 5 offset 0;

分页并显示行号,类似oracle里的rownum:

select *,row_number() over() as rownum from persons limit 5 offset 0;

以上为个人经验,希望能给大家一个参考,也希望大家多多支持小牛知识库。如有错误或未考虑完全的地方,望不吝赐教。

 类似资料:
  • 本文向大家介绍C#比较时间大小的方法总结,包括了C#比较时间大小的方法总结的使用技巧和注意事项,需要的朋友参考一下 在编写程序,我们经常会对一些时间进行比较,比如要搜寻一个时间范围中的数据,需要用户输入开始时间和结束时间,如果结束时间小于或等于开始时间,那么程序是无法完成搜索的,所以在搜索前就需要对时间进行比较,确认结束时间大于开始时间。 下面小编举例说明C#中时间比较的方法。 1、打开Micro

  • 本文向大家介绍sqlserver分页查询处理方法小结,包括了sqlserver分页查询处理方法小结的使用技巧和注意事项,需要的朋友参考一下 sqlserver2008不支持关键字limit ,所以它的分页sql查询语句将不能用MySQL的方式进行,幸好sqlserver2008提供了top,rownumber等关键字,这样就能通过这几个关键字实现分页。 下面是本人在网上查阅到的几种查询脚本的写法:

  • 问题内容: 学习Java 8 Lambda,只是想知道编译器如何知道Comparator中的哪种方法用于lambda表达式?它似乎不是SAM接口?它有2种抽象方法: 问题答案: 不是抽象方法。此方法重写,并且仅使Comparator接口能够将javadoc附加到该方法,解释了比较器应如何实现。 参见FunctionalInterface的javadoc: 如果接口声明的抽象方法覆盖了java.la

  • 我有一个从数据库中检索的时间戳值,然后将其与当前时间戳进行比较。我实际上想检索过去两个小时内登录的用户的数据。不幸的是,我面临着这个错误。请帮帮我,伙计们。我会感谢你的。我被困在这个密码里了。我的问题如下。 这就是我的错误。 org.hibernate.hql.ast.查询语法异常:意外令牌: 04行附近1,列128[SELECT ls fromcom.ideacrossing.skild.hbm

  • 本文向大家介绍查询SQLServer启动时间的三种方法,包括了查询SQLServer启动时间的三种方法的使用技巧和注意事项,需要的朋友参考一下 上午在分析索引的使用情况,想看一下数据库什么时候启动的,确保统计的数据没有问题,可以使用下面三种方法查询:

  • 本文向大家介绍sql分页查询几种写法,包括了sql分页查询几种写法的使用技巧和注意事项,需要的朋友参考一下 关于SQL语句分页,网上也有很多,我贴一部分过来,并且总结自己已知的分页到下面,方便日后查阅 1.创建测试环境,(插入100万条数据大概耗时5分钟)。 2.几种典型的分页sql,下面例子是每页50条,198*50=9900,取第199页数据。 --写法1,not in/top --写法2,n