日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Oracle分页排序数据混乱原因及解决

發布時間:2025/3/19 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Oracle分页排序数据混乱原因及解决 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

看這條分頁sql,其中order by statues_row中的statues_row字段不是唯一字段,而是一個必填的狀態字段里面例如內容是(1或者2或者3)

select * from(select * from table order by statues_row desc ) where rownum <4

?多次查詢發現select * from table order by statues_row desc 這個結果集是有序的預期目標。

但是當SORT (ORDER BY STOPKEY)后會發現,根據rownum不同,其結果集不同,如果分頁的話有可能多頁都沒有要找的數據

主要原因就是,Oracle 的order By 算法用的是快速排序算法。快速排序算法不是穩定的。所以當不斷切換rownum的時候,結果集會展示的數據不同。

ORDER BY STOPKEY,不需要對所有數據進行排序,而是只要找出結果集中的按特定順序的最前N條記錄,一旦找出了這N條記錄,就無需再對剩下的數據進行排序,而直接返回結果。

解決辦法就是order by 選擇唯一性質的字段,主鍵或是唯一索引字段后就不會出現這個問題。

例如

select * from(select * from table order by statues_row desc ,id desc ) where rownum <4

總結

以上是生活随笔為你收集整理的Oracle分页排序数据混乱原因及解决的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。