ppypp伦理天堂,91手机在线视频,免费在线观看黄色毛片,夜夜穞天天穞狠狠穞AV美女按摩

聯系官方銷售客服

1835022288

028-61286886

情況描述:

當使用order排序時,在分頁條件下,上頁出現了某某數據id=123,下頁或其他頁又會出現id=123的內容,導致重復數據顯示。


分析問題:

在MySQL 5.6的版本上,優化器在遇到order by limit語句的時候,做了一個優化,即 使用了priority queue。

使用 priority queue 的目的,就是在不能使用索引有序性的時候,如果要排序,并且使用了limit n,那么只需要在排序的過程中,保留n條記錄即可,這樣雖然不能解決所有記錄都需要排序的開銷,但是只需要 sort buffer 少量的內存就可以完成排序。

之所以MySQL 5.6出現了第二頁數據重復的問題,是因為 priority queue 使用了堆排序的排序方法,而堆排序是一個不穩定的排序方法,也就是相同的值可能排序出來的結果和讀出來的數據順序不一致。


解決方案:

方案1:在字段添加上索引,就直接按照索引的有序性進行讀取并分頁。

方案2:order參數分配給不唯一的字段,例如id,時間等字段。

方案3:將mysql版本降級到5.5,MySQL 5.5 沒有這個優化,所以也就不會出現這個問題。

本文地址:http://www.zbshanke.com/doc/1269.html

  • 前臺列表 分頁數據重復了

    復制news 模塊,新建的jiaoshi 模塊。在列表頁中 使用 order=displayorder,調用列表時。同一條內容出現在第一個分頁,也會出現在第二個分頁。代碼經檢查沒問題啊。