データの挿入率が1秒あたりほぼ5行の膨大な量のデータを含む表。 私はこのテーブルから、limit_offsetとoffsetを使って無限ページネーションを使って、左のジョインをcreated_dateの降順(挿入タイムスタンプを格納)で取得しています。ページングのmysqlオフセットと制限を管理する方法
時間を考慮すると、テーブルから重複したデータを取得することがあります。
現在、私は、1000のデータを持っている、と仮定します。
出力期待:
総記録:1000
第一フェッチ:制限:10を、オフセット:0(期待:1000、999、998、... 991)
第2フェッチ:制限:10、オフセット:10 ected:990、...、981)
第三 フェッチ:制限:10を、オフセット:20(予想:980、...、971)
実際のデータ:
合計レコード:1000
1フェッチ:制限:10、オフセット:0(実際:1000、999、998、... 991)
合計レコード:1005
2フェッチ:制限:10、オフセット:10(実績:995、...、986)
繰り返しレコード:995,994,993,992,991
合計レコード:1012
3フェッチ:制限:10、オフセット:20(実績:992、...、983)
繰り返しレコード:992,991,990,989,988,987,986
mysqlの現在のリクエストまたはプロシージャで、最初に取得されたレコードIDよりも大きなレコードIDのような別のwhere句を追加せずにデータを適切に取得するロックがありますか?
ソリューション/クエリにさらに詳しい情報が必要な場合は、ご意見ください。
私のクエリは次のとおりです。
SELECT `tab_a`.*, `tab_b`.`likes`, `tab_b`.`comment`, `tab_b`.`share`
FROM `tab_a`
LEFT JOIN `tab_b` ON `tab_a`.`id` = `tab_b`.`post_id`
WHERE post_position IN (?) AND (post_date BETWEEN ? AND ?)
GROUP BY `tab_a`.`id` ORDER BY `tab_a`.`id` DESC, `tab_b`.`created_date` DESC
LIMIT 9 OFFSET 0
する必要があり、990です。 https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple-sql-queryを参照してください。 – Strawberry