PostgreSQL 分页查询时间的2种比较方法小结
数据库中存了3000W条数据,两种分页查询测试时间
第一种
SELECT*FROMtest_tableWHEREi_id>1000limit100;
Time:0.016s
第二种
SELECT*FROMtest_tablelimit100OFFSET1000;
Time:0.003s
第一种
SELECT*FROMtest_tableWHEREi_id>10000limit100;
Time:0.004s
第二种
SELECT*FROMtest_tablelimit100OFFSET10000;
Time:0.508s
第一种:
SELECT*FROMtest_tableWHEREi_id>100000limit100;
Time:0.003s
第二种:
SELECT*FROMtest_tablelimit100OFFSET100000; Time:2.377s SELECT*FROMtest_tableWHEREc_act='登录'limit100OFFSET100000; Time:3.649s
第一种:
SELECT*FROMtest_tableWHEREi_id>1000000limit100;
Time:0.004s
第二种:
SELECT*FROMtest_tablelimit100OFFSET1000000;
Time:14.403s
第一种:
SELECT*FROMtest_tableWHEREi_id>10000000limit100;
Time:0.057s
第二种:
失去等待出来结果的耐心!!!
建议使用第一种分页方法~
补充:postgreSQL数据库limit分页、排序
limit分页语法:
select*frompersonslimitAoffsetB;
解释:
A就是你需要显示多少行;
B就是查询的起点位置。
示例:
select*frompersonslimit5offset0;
意思是,起点0开始查询,返回5条数据。
select*frompersonslimit15offset5;
意思是,起点5开始查询,返回15条数据。
特殊:
select*frompersonslimit5;
这个就类似:
select*frompersonslimit5offset0;
也就是,从起点0开始查询,返回5条数据。
按规则排序,同时也要分页:
select*frompersonsorderbylastnamelimit5offset0;
分页并显示行号,类似oracle里的rownum:
select*,row_number()over()asrownumfrompersonslimit5offset0;
以上为个人经验,希望能给大家一个参考,也希望大家多多支持毛票票。如有错误或未考虑完全的地方,望不吝赐教。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。