>  기사  >  데이터 베이스  >  수백만 개의 데이터에서 MySQL 페이징 문제

수백만 개의 데이터에서 MySQL 페이징 문제

藏色散人
藏色散人앞으로
2019-04-17 17:23:343731검색

우리는 개발 과정에서 페이징을 자주 사용합니다. 핵심 기술은 데이터를 읽는 데 한계를 사용하는 것입니다. 페이징 제한 사용 테스트 중 다음 데이터를 얻었습니다.

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 hcoder.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제