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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

java混合分页_坑,MySQL中 order by 与 limit 混用,分页会出现问题!

發布時間:2025/3/11 数据库 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java混合分页_坑,MySQL中 order by 与 limit 混用,分页会出现问题! 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在Mysql中我們常常用order by來進行排序,使用limit來進行分頁,當需要先排序后分頁時我們往往使用類似的寫法select * from 表名 order by 排序字段 limt M,N。

但是這種寫法卻隱藏著較深的使用陷阱。在排序字段有數據重復的情況下,會很容易出現排序結果與預期不一致的問題。

比如現在有一張user表,表結構及數據如下:

表結構

表數據

現在想根據創建時間升序查詢user表,并且分頁查詢,每頁2條,那很容易寫出sql為:select * from user order by create_time limit pageNo,2;

在執行查詢過程中會發現:

1、查詢第一頁數據時:

第一頁查詢結果

2、查詢第四頁數據時:

第四頁查詢結果

user表共有8條數據,有4頁數據,但是實際查詢過程中第一頁與第四頁竟然出現了相同的數據。

這是什么情況?難道上面的分頁SQL不是先將兩個表關聯查詢出來,然后再排好序,再取對應分頁的數據嗎???

上面的實際執行結果已經證明現實與想像往往是有差距的,實際SQL執行時并不是按照上述方式執行的。這里其實是Mysql會對Limit做優化,具體優化方式見官方文檔:

https://dev.mysql.com/doc/refman/5.7/en/limit-optimization.html

這個是5.7版本的說明,提取幾個問題直接相關的點做下說明。

Paste_Image.png

上面官方文檔里面有提到如果你將Limit row_count與order by混用,mysql會找到排序的row_count行后立馬返回,而不是排序整個查詢結果再返回。如果是通過索引排序,會非常快;

這里我們查看下對應SQL的執行計劃:

Paste_Image.png

可以確認是用的文件排序,表確實也沒有加額外的索引。所以我們可以確定這個SQL執行時是會找到limit要求的行后立馬返回查詢結果的。

不過就算它立馬返回,為什么分頁會不準呢?

官方文檔里面做了如下說明:

Paste_Image.png

基于這個我們就基本知道為什么分頁會不準了,因為我們排序的字段是create_time,正好又有幾個相同的值的行,在實際執行時返回結果對應的行的順序是不確定的。對應上面的情況,第一頁返回的name為8的數據行,可能正好排在前面,而第四頁查詢時name為8的數據行正好排在后面,所以第四頁又出現了。

那這種情況應該怎么解決呢?

官方給出了解決方案:

Paste_Image.png

如果想在Limit存在或不存在的情況下,都保證排序結果相同,可以額外加一個排序條件。例如id字段是唯一的,可以考慮在排序字段中額外加個id排序去確保順序穩定。

所以上面的情況下可以在SQL再添加個排序字段,比如fund_flow的id字段,這樣分頁的問題就解決了。修改后的SQL可以像下面這樣:

SELECT?*?FROM?`user`?ORDER?BY?create_time,id?LIMIT?6,2;

再次測試問題解決!!

總結

以上是生活随笔為你收集整理的java混合分页_坑,MySQL中 order by 与 limit 混用,分页会出现问题!的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 黄色免费成人 | 国产自产精品 | 国产98色在线 | 日韩 | 九九免费视频 | 99re在线观看视频 | 野外吮她的花蒂高h在线观看 | 日本伦理片在线看 | 日皮在线观看 | gai免费观看网站外网 | 五月婷婷伊人网 | 亚洲在线天堂 | 亚洲最大av在线 | 自拍偷拍校园春色 | 大咪咪dvd | 国产免费激情视频 | 丰满人妻妇伦又伦精品国产 | 亚洲午夜精品久久久久久浪潮 | 72种无遮挡啪啪的姿势 | 白浆影院| 禁断介护av一区二区 | 久久亚洲精华国产精华液 | 成人黄色小视频 | 午夜视频国产 | 黄色高清视频在线观看 | 精东av在线 | 东北少妇不带套对白 | 美女中文字幕 | 久久成人人人人精品欧 | www.欧美视频 | 国产精品福利视频 | 特黄做受又粗又大又硬老头 | 四虎网站在线 | 久久99影院 | 国产高潮久久 | 岛国精品在线观看 | 欧美 日韩 国产 成人 在线 91 | 亚洲中文字幕无码爆乳av | 亚洲午码 | 成人性生交大片免费看 | 日本道中文字幕 | 偷偷操网站 | 国产午夜性春猛交ⅹxxx | 色婷婷成人网 | 欧洲亚洲一区二区 | av福利社| 精品欧美一区二区三区久久久 | 黄色大片91 | 国产精品久久77777 | 欧美日韩小视频 | 在线播放日韩av | 久草福利在线视频 | 奶水旺盛的女人伦理 | 一区二区三区四区欧美 | 五十路av | 成人网在线 | 三级三级久久三级久久18 | 猫咪av网 | 秋霞一区二区三区 | 亚洲区久久 | www国产91| 国产女人18水真多毛片18精品 | 国产精品一区二区三区免费观看 | 免费 成 人 黄 色 | 久久久久久91香蕉国产 | 亚洲高清久久 | 伊人影音| 爱爱视频在线免费观看 | 国产无遮挡呻吟娇喘视频 | 视频在线免费观看 | 波多野一区二区三区 | 超碰1997| 欧美日韩蜜桃 | 久久久国产精品一区二区三区 | 国产一区二区在线视频观看 | 99re在线视频观看 | 午夜在线视频免费 | 91视频看片| 手机看片日韩欧美 | 丰满肉肉bbwwbbww | 亚洲AV无码成人精品一区 | 高h视频在线播放 | 香蕉视频在线视频 | gogo人体做爰aaaa| 国产成人在线观看免费网站 | 中文无码一区二区三区在线观看 | 欧美午夜精品一区二区三区 | 176精品免费 | 漂亮少妇高潮午夜精品 | 不卡一二三| 日韩精品极品视频免费观看 | 伊人网在线观看 | 久久久久久久国产视频 | 欧美日韩高清一区二区 | 欧美猛交xxx | 不卡一区二区三区四区 | 中国精品久久久 | 欧美一卡二卡三卡四卡 | 亚洲色在线视频 | 激情五月激情综合 |