> 데이터 베이스 > MySQL 튜토리얼 > MySQL에서 페이지 매김에 대한 전체 결과를 효율적으로 검색하려면 어떻게 해야 합니까?

MySQL에서 페이지 매김에 대한 전체 결과를 효율적으로 검색하려면 어떻게 해야 합니까?

DDD
풀어 주다: 2024-11-23 21:29:10
원래의
151명이 탐색했습니다.

How Can I Efficiently Retrieve Total Results for Pagination in MySQL?

MySQL을 사용하여 페이지 매김에 대한 전체 결과를 효율적으로 검색

페이지 매김은 대규모 데이터 세트를 통해 사용자 탐색을 향상시키는 중요한 기능입니다. MySQL에서는 특정 결과 하위 집합을 가져오기 위해 OFFSET 및 LIMIT 절을 사용하여 이를 수행하는 경우가 많습니다. 그러나 필요한 총 페이지 수를 결정하려면 페이지 매김 매개변수를 적용하기 전에 총 결과 수를 알아야 합니다.

일반적으로 개발자는 쿼리를 두 번 실행합니다. 한 번은 LIMIT를 사용하여 하위 집합을 검색하고 다시 한 번 실행합니다. LIMIT 없이 결과를 계산합니다. 이 접근 방식은 불필요한 리소스 소비를 초래할 수 있습니다. 다행히 SQL_CALC_FOUND_ROWS 힌트를 사용하는 더 효율적인 솔루션이 있습니다.

SQL_CALC_FOUND_ROWS 사용:

프로세스를 최적화하려면 원래 SQL 쿼리에 SQL_CALC_FOUND_ROWS를 추가하세요.

SELECT *
FROM table_name
WHERE category_id = 1
ORDER BY id
LIMIT 10 OFFSET 20
로그인 후 복사

이것은 MySQL에게 다음을 계산하도록 지시합니다. OFFSET 및 LIMIT 매개변수를 적용하기 전 일치하는 총 행 수.

총 개수 검색:

쿼리를 실행한 후 일치하는 총 개수를 검색할 수 있습니다. 다음 SQL 문을 사용하는 행:

SELECT FOUND_ROWS()
로그인 후 복사

계산 중 페이지:

총 개수와 LIMIT 매개변수를 알면 총 페이지 수를 쉽게 계산할 수 있습니다.

$totalPages = ceil($totalCount / $limit);
로그인 후 복사

코드 예:

CodeIgniter에서는 이미 쿼리를 정의했다고 가정하고 다음 코드 조각을 사용할 수 있습니다. $query 변수:

$query->sql_calc_found_rows();
$result = $query->get();

$totalPages = ceil($this->db->query('SELECT FOUND_ROWS()')->row('FOUND_ROWS()') / $limit);
로그인 후 복사

SQL_CALC_FOUND_ROWS를 활용하면 추가 쿼리를 실행하지 않고도 총 결과 수를 효율적으로 검색할 수 있어 귀중한 계산 리소스를 절약하고 페이지 매김 기능의 성능을 향상시킬 수 있습니다.

위 내용은 MySQL에서 페이지 매김에 대한 전체 결과를 효율적으로 검색하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿