【IT老齊074】海量資料大頁碼MySQL查詢

Faetbwac發表於2024-03-26

【IT老齊074】海量資料大頁碼MySQL查詢

場景

1711420849635

分頁最後資料查詢慢,新增索引,索引失效

SELECT
	* 
FROM
	blog_browse_history 
ORDER BY
	create_time 
	LIMIT 500000,
	10;

1711421000702

查詢最佳化

利用索引覆蓋特性查詢第50000頁的起始時間,基於索引快速定位,向後取10條資料

SELECT
	* 
FROM
	blog_browse_history 
WHERE
	create_time >= ( SELECT create_time FROM blog_browse_history ORDER BY create_time LIMIT 5000, 1 ) 
ORDER BY
	create_time 
	LIMIT 10;

翻頁最佳化

連續翻頁,可利用上一頁最後一條記錄的時間作為下一頁的查詢起始時間,可以減少一次子查詢

1711421704512

SELECT
	* 
FROM
	blog_browse_history 
WHERE
	create_time > '2021-03-20 :4:24' 
ORDER BY
	create_time 
	LIMIT 10;

重複資料處理

連續切換頁還需要考慮出現大量重複資料的情況,在後續頁查詢額外需要增加偏移量處理

考慮使用id作為分頁條件

相關文章