데이터베이스에서는 데이터에 대해 페이징 쿼리를 수행하고, 각 페이지에 표시되는 숫자를 제어하고, 해당 결과를 반환해야 하는 경우가 많습니다.
MySQL은 LIMIT 및 OFFSET 키워드를 사용하여 페이지를 매긴 쿼리를 수행하는 매우 간단한 방법을 제공합니다.
LIMIT는 쿼리 결과에서 반환되는 레코드 행 수를 정의하고, OFFSET은 결과가 반환되는 행을 정의합니다. 예:
SELECT * FROM table_name LIMIT 10 OFFSET 20;
위 명령문은 table_name 테이블에서 데이터의 21~30번째 행을 반환합니다.
1~10개 행의 데이터를 표시하려면 LIMIT를 직접 사용하세요.
SELECT * FROM table_name LIMIT 10;
MySQL에서는 두 개의 매개변수를 사용하여 반환할 항목을 지정하는 또 다른 LIMIT 사용 방법도 제공합니다. 기록과 출발선 번호. 예:
SELECT * FROM table_name LIMIT 20, 10;
위 명령문은 table_name 테이블에서 데이터의 21~30번째 행을 반환합니다.
LIMIT 및 OFFSET 키워드 외에도 페이징 쿼리에 ROW_NUMBER() 함수를 사용할 수도 있습니다. 이 기능은 SQL Server 및 Oracle 데이터베이스에서 널리 사용되지만 MySQL에서는 흔하지 않습니다.
페이징 쿼리에 이 함수를 사용하려면 먼저 쿼리 결과를 정렬한 후 ROW_NUMBER() 함수를 추가해야 합니다. 예:
SELECT *, ROW_NUMBER() OVER (ORDER BY column_name) as row_num
FROM table_name
LIMIT 20 OFFSET 0;
위 명령문은 table_name 테이블의 column_name 열을 기준으로 결과를 정렬하고 테이블의 처음 20개 행을 반환합니다. 데이터.
기본 페이징 쿼리 외에도 INNER JOIN 또는 LEFT JOIN을 사용하여 여러 테이블을 결합하여 보다 포괄적인 데이터를 얻는 등 페이징을 위한 다른 기술을 사용할 수도 있습니다.
예를 들어 두 테이블에서 특정 조건과 일치하는 레코드를 찾아야 한다고 가정해 보겠습니다. INNER JOIN 또는 LEFT JOIN을 제한하기 위해 중첩 쿼리를 사용할 수 있습니다.
SELECT * FROM table_1
INNER JOIN table_2 ON table_1.id = table_2.id
WHERE 조건
LIMIT 20 OFFSET 0;
위 명령문은 Find에 있습니다. table_1 및 table_2 테이블의 조건을 충족하는 레코드를 반환하고 데이터의 처음 20개 행을 반환합니다.
페이징 쿼리를 수행할 때 일부 성능 및 효율성 문제에도 주의를 기울여야 합니다. 예를 들어, OFFSET 키워드를 사용할 때 MySQL은 반환할 레코드를 찾기 위해 전체 결과 집합을 검색해야 합니다.
쿼리 효율성을 높이기 위해 기본 키 또는 고유 인덱스를 사용하여 테이블을 정렬할 수 있습니다. 이렇게 하면 쿼리가 더 빨라지고 포함 인덱스를 사용하여 임시 테이블 사용을 피할 수 있습니다.
일반적으로 페이징 쿼리를 수행할 때는 범주별로 각 쿼리의 요구 사항을 고려하고 적절한 방법을 채택하여 쿼리 효율성을 높이고 쿼리 결과의 정확성을 보장해야 합니다.
위 내용은 페이지 매김 쿼리 mysql 문의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!