>  기사  >  데이터 베이스  >  SQL_CALC_FOUND_ROWS를 사용하여 페이지를 매긴 MySQL 쿼리에서 효율적으로 행 수를 얻는 방법은 무엇입니까?

SQL_CALC_FOUND_ROWS를 사용하여 페이지를 매긴 MySQL 쿼리에서 효율적으로 행 수를 얻는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-01 03:58:28344검색

How to Efficiently Get Row Count in Paginated MySQL Queries with SQL_CALC_FOUND_ROWS?

SQL_CALC_FOUND_ROWS를 사용하여 LIMIT에도 불구하고 행 수 가져오기

페이지 매김("LIMIT" 절)이 포함된 복잡한 MySQL 쿼리를 실행할 때 총 행 수를 얻는 것이 어려울 수 있습니다. 총 개수에 대해 LIMIT 절을 사용하지 않고 쿼리를 두 번 실행하는 것은 비효율적일 수 있습니다.

다행히 MySQL에서는 LIMIT 절을 사용하면서도 총 행 개수를 계산할 수 있는 SQL_CALC_FOUND_ROWS 옵션을 도입했습니다. 작동 방식은 다음과 같습니다.

  1. 기본 쿼리에 SQL_CALC_FOUND_ROWS를 추가합니다.
    SELECT 절 바로 뒤에 SQL_CALC_FOUND_ROWS를 기본 쿼리에 추가합니다.
  2. 두 번째 쿼리를 실행하여 행 가져오기 개수:
    FOUND_ROWS() 함수를 사용하여 두 번째 쿼리를 실행하여 총 행 개수를 검색합니다.

쿼리 예시:

<code class="sql">-- Main query with SQL_CALC_FOUND_ROWS
SELECT SQL_CALC_FOUND_ROWS name, email FROM users WHERE name LIKE 'a%' LIMIT 10;

-- Second query to get row count
SELECT FOUND_ROWS();</code>

제한사항 및 대안:

SQL_CALC_FOUND_ROWS는 편리한 솔루션을 제공하지만 MySQL 8.0.17에서는 더 이상 사용되지 않습니다. 대부분의 경우 쿼리를 두 번 실행하는 것이 더 빠릅니다.

대안으로 MySQL 8.0에서는 행 수를 가져오기 위해 다음과 같은 최적화된 옵션을 도입합니다.

  • ROW_COUNT() 함수: 이전 쿼리에서 반환된 행 수를 반환합니다.
  • COUNT() 기능: COUNT(*)를 하위 쿼리로 사용하여 행 수를 계산합니다.

이러한 기술을 활용하여 개발자는 속도 저하 없이 페이지를 매긴 MySQL 쿼리에서 전체 행 수를 효율적으로 검색할 수 있습니다. 공연.

위 내용은 SQL_CALC_FOUND_ROWS를 사용하여 페이지를 매긴 MySQL 쿼리에서 효율적으로 행 수를 얻는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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