집 >데이터 베이스 >MySQL 튜토리얼 >MySQL 페이징 쿼리 예시 설명
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 페이징 쿼리 예시 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!