一個包含大量數據的表,其中數據插入速率幾乎爲每秒5行。 我正在使用限制和偏移量連同左連接按照created_date(它存儲插入時間戳)降序的無限分頁從該表中獲取數據。如何管理mysql偏移和分頁限制
因此,通過考慮時間,它恰好從表中獲取重複數據。
假設,目前我有1000個數據,爲:
預期輸出:
總記錄:1000
第一抓取:極限:10,偏移量:0(預期:1000,999,998,... 991)
第2次提取:限制:10,偏移量:10(Exp ected:990,...,981)
第三 取:極限:10,偏移量:20(應爲:980,...,971)
實際數據:
總記錄:1000
第一抓取:極限:10,偏移量:0(實際:1000,999,998,.... 991)
總記錄:1005
第二抓取:極限:10,偏移量:10(實際:995,...,986)
重複記錄:995,994,993,992,991
總記錄:1012
第三抓取:極限:10,偏移量:20(實際:992,...,983)
重複記錄:992,991,990,989,988,987,986
是否有任何鎖定當前的請求或過程在mysql中正確提取數據而不添加另一個where子句像記錄ID大於第一次提取的那樣?
如果解決方案/查詢需要更多信息,請發表評論。
我的查詢是:
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
您的查詢是沒有意義的,這讓我在一個小的損失,從而進一步幫助。請參閱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