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

藏色散人
풀어 주다: 2019-04-17 17:23:34
앞으로
3569명이 탐색했습니다.

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

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으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!