>  기사  >  데이터 베이스  >  MySQL 페이징 쿼리 예시 설명

MySQL 페이징 쿼리 예시 설명

小云云
小云云원래의
2018-01-30 17:22:441707검색

LIMIT 절을 사용하면 SELECT 문이 지정된 수의 레코드를 반환하도록 강제할 수 있습니다. LIMIT는 하나 또는 두 개의 숫자 인수를 허용합니다. 매개변수는 정수 상수여야 합니다. 두 개의 매개변수가 제공되는 경우 첫 번째 매개변수는 첫 번째 반환된 레코드 행의 offset을 지정하고, 두 번째 매개변수는 반환된 레코드 행의 최대 개수를 지정합니다. 초기 레코드 행의 오프셋은 0(1 아님)입니다. 아래에서는 특별한 경우에 대한 mysql 페이징 쿼리를 요약합니다.

mysql은 페이징 기능을 제공합니다:

SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset

가장 간단한 사용법은:

select * from table limit ?,?

이것은 가장 간단한 제한 페이징 쿼리입니다. where 조건과 함께 사용하세요:

select * from table where column > ? order by id limit ?,?

위 상황에서는 컬럼과 id에 대한 복합 인덱스를 구축하는 것이 좋습니다.
위의 두 경우에서 이 SQL은 작은 데이터 볼륨의 페이징 쿼리에 충분합니다. 하지만 수백만 레벨 이상의 데이터 테이블의 경우 위의 SQL을 사용하면 한계 문의 오프셋이 점점 커지고 쿼리가 점점 느려집니다. 유사:

select * from `user` where `cate`='陕西' order by id limit 100000,10

이런 종류의 쿼리를 피하기 위해 subquery를 통해 쿼리 효율성을 향상시킬 수 있습니다.

select * from `user` where id >=(select * from `user` where `cate`='陕西' order by id limit 100000,1) and `cate`='陕西' limit 10

설명을 통해 직접 제한 쿼리와 하위 쿼리의 차이점을 확인할 수 있습니다.

직접 제한 쿼리:
type possible_keys key key_len ref rows 엑스트라
ALL (NULL) (NULL) (NULL) (NULL) 4076607
하위 쿼리 페이징 쿼리:
type possible_keys key key_len ref rows Extra
PRIMARY range PRIMARY PRIMARY 4 203833 1 where
SUBQUERY index ( NULL 사용 ) PRIMARY 4 4076663 인덱스 사용

서브쿼리를 통해서는 인덱스를 대상으로 서브쿼리를 수행하는 반면, 일반 쿼리는 의 데이터 파일을 대상으로 수행하는 것을 알 수 있다. 일반적으로 인덱스 파일은 데이터 파일보다 크기가 훨씬 작기 때문에 인덱스 파일을 운영하는 것이 더 직접적이고 효율적입니다.

또한

join paging 방법

SELECT * FROM `user` AS t1 
JOIN (SELECT id FROM `user` ORDER BY id LIMIT 100000, 1) AS t2 
WHERE t1.id <= t2.id ORDER BY t1.id LIMIT 10;
을 사용할 수도 있습니다. Join Paging과 Subquery Paging의 효율성은 기본적으로 동일한 수준입니다. (단, 하위 쿼리는 메모리에 임시 테이블을 생성해야 합니다. 쿼리가 완료된 후 MySQL은 이러한 임시 테이블을 취소해야 합니다. 이러한 상황은 조인을 통해 피할 수 있습니다.) 쿼리를 페이징하기 전에 해당 쿼리가 내부에 있는지 판단할 수 있습니다. 페이지 수가 제한되어 있으므로 기본 페이징 쿼리를 사용하고 1보다 큰 경우 하위 쿼리 페이징 처리를 사용합니다.

관련 권장 사항:


mysql 페이징 성능 탐색

MySQL 페이징 최적화 테스트 사례

MySQL 페이징 성능 최적화 가이드

위 내용은 MySQL 페이징 쿼리 예시 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.