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條數據。
按規(guī)則排序,同時也要分頁:
select * from persons order by lastname limit 5 offset 0;
分頁并顯示行號,類似oracle里的rownum:
select *,row_number() over() as rownum from persons limit 5 offset 0;
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。
相關文章
Abp.NHibernate連接PostgreSQl數據庫的方法
這篇文章主要為大家詳細介紹了Abp.NHibernate連接PostgreSQl數據庫的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-01-01postgresql 查詢集合結果用逗號分隔返回字符串處理的操作
這篇文章主要介紹了postgresql 查詢集合結果用逗號分隔返回字符串處理的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-02-02Docker環(huán)境下升級PostgreSQL的步驟方法詳解
這篇文章主要介紹了Docker環(huán)境下升級PostgreSQL的步驟方法詳解,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-01-01