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