우리는 개발 과정에서 페이징을 자주 사용합니다. 핵심 기술은 데이터를 읽는 데 한계를 사용하는 것입니다. 페이징 제한 사용 테스트 중 다음 데이터를 얻었습니다.
select * from news order by id desc limit 0,10 耗时0.003秒 select * from news order by id desc limit 10000,10 耗时0.058秒 select * from news order by id desc limit 100000,10 耗时0.575秒 select * from news order by id desc limit 1000000,10 耗时7.28秒
페이징 시작 지점이 클수록 데이터 볼륨이 클 때 mysql의 쿼리 속도가 느려지는 것을 보고 놀랐습니다. 백만 개의 항목에는 이미 7초가 걸립니다. 이는 우리가 받아들일 수 없는 가치입니다!
개선 계획 1
select * from news where id > (select id from news order by id desc limit 1000000, 1) order by id desc limit 0,10
쿼리 시간 0.365초, 효율성 향상이 눈에 띕니다! ! 원리는 무엇입니까? ? ?
조건을 사용하여 ID를 필터링했습니다. 하위 쿼리(id desc 제한 1000000, 1로 뉴스 순서에서 id 선택)에서 id 필드만 쿼리했는데, 이는 *를 선택하거나 여러 필드를 선택하는 것에 비해 많은 시간을 절약했습니다. 비용을 확인해보세요!
개선 계획 2
연속 ID가 있는 시스템에 적합하며 매우 빠릅니다!
select * from news where id between 1000000 and 1000010 order by id desc
조건 및 불연속 ID가 있는 쿼리에는 적합하지 않습니다. 매우 빠릅니다!
위 내용은 수백만 개의 데이터에서 MySQL 페이징 문제의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!