によって注文されたコンテンツフィードがありdate DESC, id DESC
ます。
date
日時ではなく、単なる日付です。
id
典型的なINT auto_increment
です。
n
「特定の行の後に来る」行を照会する必要があります。(「現在の最後のアイテムより古いアイテムをフェッチする」必要がある無限のスクロールを想像してください)
を照会しますwhere id < :last_id
が、問題は、の順序がの順序とdate
一貫していないことです_id
。
クエリを実行しますwhere date < :last_date
が、問題は「1日あたり」に複数のアイテムがあることです。同じ日付を使用するすべてのアイテムを失います。
クエリを実行しますORDER BY date DESC, id DESC LIMIT x, n
が、フィードが2つのクエリ間で変更され、新しいアイテムが上部に追加されるため、オフセット全体がシフトする可能性があります。
where date <= :last_date ORDER BY LIMIT date DESC, id DESC LIMIT n+20
私の現在のハッキーな解決策は、現在の最新のアイテムの前にある結果を照会してから「手動で」破棄することです。(20以下であることを願っています)。
私は同じような問題に遭遇した最初の人ではないと確信しています...何かアイデアはありますか?