>데이터 베이스 >MySQL 튜토리얼 >두 개의 쿼리를 만들지 않고 MySQL 페이지 매김을 최적화하는 방법은 무엇입니까?

두 개의 쿼리를 만들지 않고 MySQL 페이지 매김을 최적화하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-06 08:47:101003검색

How to Optimize MySQL Pagination Without Making Two Queries?

MySQL의 페이지 매김: 이중 쿼리를 사용하지 않는 최적의 기술

대규모 데이터 세트를 관리 가능한 덩어리로 표시하기 위한 기본 기술인 페이지 매김에는 종종 두 개의 별도 MySQL의 쿼리. 한 쿼리는 전체 결과 수를 검색하는 반면 다른 쿼리는 페이지 매김 매개변수를 기반으로 결과를 제한합니다.

이중 쿼리: 기존 접근 방식

전통적으로 페이지 매김은 다음을 통해 수행됩니다. 다음 단계:

  1. 쿼리를 실행하여 총 결과 수:

    SELECT COUNT(*) FROM `table` WHERE `some_condition`
  2. 특정 페이지를 표시하도록 결과 제한:

    SELECT `fields` FROM `table` WHERE `some_condition` LIMIT 0, 10

Double의 제한 쿼리

이 접근 방식은 안정적이지만 다음과 같은 문제가 있습니다. 다음 제한 사항:

  • 두 개의 쿼리: 두 개의 별도 데이터베이스 호출이 필요하며 잠재적으로 성능에 영향을 미칠 수 있습니다.
  • 캐싱: 개수 캐싱 성능 문제를 완화할 수 있지만 추가적인 문제가 발생합니다.

대체 기술

이중 쿼리는 널리 사용되는 기술이지만 페이지 매기기의 유일한 옵션은 아닙니다. 대체 방법은 다음과 같습니다.

SQL_CALC_FOUND_ROWS 및 FOUND_ROWS() 사용

  1. SQL_CALC_FOUND_ROWS를 사용하여 쿼리 실행 절:

    SELECT `fields` FROM `table` WHERE `some_condition` ORDER BY `field_name`
  2. SELECT FOUND_ROWS()를 실행하여 총 결과 수를 검색합니다.

    SELECT FOUND_ROWS()

SQL_CALC_FOUND_ROWS

  • 성능: 알려진 MySQL 버그로 인해 대규모 테이블에서 이중 쿼리보다 속도가 느려질 수 있습니다.
  • 순서: 초기에 ORDER BY 절이 필요합니다. query.

캐싱

총 개수를 캐싱하면 이중 쿼리 및 SQL_CALC_FOUND_ROWS 기술 모두에 대한 성능이 크게 향상될 수 있습니다. 카운트를 임시 데이터베이스나 캐시에 저장하면 카운팅 쿼리를 반복적으로 실행하지 않아도 됩니다.

최적 기술 선택

애플리케이션에 가장 적합한 페이지 매김 기술은 다음과 같습니다. 데이터 세트 크기, 성능 요구 사항, 정렬 또는 필터링 기준의 유무 등 다양한 요소에 따라 결정됩니다. 다음 지침을 고려하십시오.

  • 소규모 데이터 세트 및 성능이 중요하지 않은 경우 이중 쿼리는 간단하고 안정적인 옵션입니다.
  • 성능이 중요한 대규모 데이터 세트의 경우 개수를 캐싱합니다. 이중 쿼리를 크게 향상시킬 수 있습니다.
  • 정렬이나 필터링을 사용한 페이지 매김의 경우 SQL_CALC_FOUND_ROWS는 이중 쿼리의 효율적인 대안입니다. 문의 중입니다.

위 내용은 두 개의 쿼리를 만들지 않고 MySQL 페이지 매김을 최적화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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