日韩小视频-日韩久久一区二区三区-日韩久久一级毛片-日韩久久久精品中文字幕-国产精品亚洲精品影院-国产精品亚洲欧美云霸高清

下載吧 - 綠色安全的游戲和軟件下載中心

軟件下載吧

當前位置:軟件下載吧 > 技術開發 > 數據庫 > postgresql分頁數據重復問題的深入理解

postgresql分頁數據重復問題的深入理解

時間:2024-03-11 15:08作者:下載吧人氣:35

問題背景

許多開發和測試人員都可能遇到過列表的數據翻下一頁的時候顯示了上一頁的數據,也就是翻頁會有重復的數據。

如何處理?

這個問題出現的原因是因為選擇的排序字段有重復,常見的處理辦法就是排序的時候加上唯一字段,這樣在分頁的過程中數據就不會重復了。 關于這個問題文檔也有解釋并非是一個bug。而是排序時需要選擇唯一字段來做排序,不然返回的結果不確定

排序返回數據重復的根本原因是什么呢?

經常優化sql的同學可能會發現,執行計劃里面會有Sort Method這個關鍵字,而這個關鍵字就是排序選擇的方法。abase的排序分為三種

quicksort                       快速排序   
top-N heapsort  Memory          堆排序
external merge  Disk            歸并排序

推測

分頁重復的問題和執行計劃選擇排序算法的穩定性有關。

簡單介紹下這三種排序算法的場景:

在有索引的情況下:排序可以直接走索引。 在沒有索引的情況下:當表的數據量較小的時候選擇快速排序(排序所需必須內存小于work_mem), 當排序有limit,且耗費的內存不超過work_mem時選擇堆排序, 當work_mem不夠時選擇歸并排序。

驗證推測

1.創建表,初始化數據

abase=# create table t_sort(n_int int,c_id varchar(300));
CREATE TABLE
abase=# insert into t_sort(n_int,c_id) select 100,generate_series(1,9);
INSERT 0 9
abase=# insert into t_sort(n_int,c_id) select 200,generate_series(1,9);
INSERT 0 9
abase=# insert into t_sort(n_int,c_id) select 300,generate_series(1,9);
INSERT 0 9
abase=# insert into t_sort(n_int,c_id) select 400,generate_series(1,9);
INSERT 0 9
abase=# insert into t_sort(n_int,c_id) select 500,generate_series(1,9);
INSERT 0 9
abase=# insert into t_sort(n_int,c_id) select 600,generate_series(1,9);
INSERT 0 9

標簽[db:關鍵字]

相關下載

查看所有評論+

網友評論

網友
您的評論需要經過審核才能顯示

熱門閱覽

最新排行

公眾號

主站蜘蛛池模板: 国产激情一区二区三区四区 | 国产高清美女一级a毛片久久 | 国产午夜一级淫片 | 欧美一级看片免费观看视频在线 | 成人在线毛片 | 一级特色大黄美女播放网站 | 成人18免费软件 | cao草棚视频网址成人 | 国产欧美精品一区二区三区 | 宅女深夜福利视频在线 | 一级毛片韩国 | 国产欧美一区二区三区免费 | 日本黄色美女网站 | 国产一区二区三区国产精品 | 禁止18周岁进入免费网站观看 | 97在线视频免费公开观看 | 久久精品国产99国产精品亚洲 | 国产精品反差婊在线观看 | 免费看91毛片 | 97免费视频在线 | 久久综合99re88久久爱 | 免费人欧美成又黄又爽的视频 | 香港av三级 | 欧美日韩一区二区三区四区在线观看 | 三级欧美在线 | 国产一级一级片 | 日本一级毛片免费 | 精品久久久久久中文字幕网 | 人人公开免费超级碰碰碰视频 | 日产一一到六区网站免费 | 国产毛片久久久久久国产毛片 | xxx免费视频 | 人妖欧美一区二区三区四区 | 亚洲综合视频网 | 夜色综合| 久久精品国产99国产 | 亚洲欧美日韩色 | 大陆高清自拍 | 女在床上被男的插爽叫视频 | 久久久久久亚洲精品 | 久草综合网 |