>백엔드 개발 >PHP 튜토리얼 >LIMIT를 적용하기 전에 PostgreSQL에서 총 결과 수를 효율적으로 검색하는 방법은 무엇입니까?

LIMIT를 적용하기 전에 PostgreSQL에서 총 결과 수를 효율적으로 검색하는 방법은 무엇입니까?

DDD
DDD원래의
2024-12-13 22:48:11696검색

How to Efficiently Retrieve Total Result Count in PostgreSQL Before Applying LIMIT?

제한 적용 전 결과 수를 검색하는 최적의 접근 방식

데이터베이스 페이징에서 총 페이지 수를 결정하는 것은 페이지 매김 컨트롤을 렌더링하는 데 중요합니다. 그러나 이 목적을 위해 별도의 개수 및 제한 쿼리를 실행하는 것은 비효율적일 수 있습니다. 이 문서에서는 데이터베이스 제한을 적용하지 않고 결과 수를 얻는 향상된 기술을 살펴봅니다.

Postgres 창 함수

PostgreSQL 버전 8.4 이상에서는 창 함수를 도입하여 분할된 하위 집합에 대한 집계 함수 계산을 가능하게 했습니다. 데이터. 이를 통해 단일 쿼리로 총 개수를 결정하고 제한된 결과를 검색할 수 있습니다.

SELECT foo,
       COUNT(*) OVER() AS full_count
FROM bar
WHERE <some condition>
ORDER BY <some col>
LIMIT <pagesize>
OFFSET <offset>;

그러나 이 방법은 모든 적격 행을 계산해야 하므로 추가 성능 오버헤드가 발생할 수 있으며 잠재적으로 대규모 성능에 영향을 줄 수 있습니다. 총 행 수에 가까운 테이블 또는 OFFSET 값.

결과 수에 대한 대체 옵션

성능이 중요한 경우, OFFSET 및 LIMIT 애플리케이션과 관계없이 영향을 받는 행의 최종 개수를 얻기 위해 대체 접근 방식을 사용할 수 있습니다. Postgres 내부 기록은 일부 클라이언트가 액세스할 수 있는 이 정보를 추적합니다.

  • PL/pgSQL: GET DIAGNOSTICS를 사용하여 SQL 명령을 실행한 후 행 수를 검색합니다.
  • PHP: pg_num_rows 함수를 사용하여 영향을 받는 행.

추가 리소스

  • [일괄 쿼리의 영향을 받는 행 수 계산 PostgreSQL](https://dba.stackexchange.com/questions/247142/calculate-number-of-rows-affected-by-batch-query-in-postgresql)

위 내용은 LIMIT를 적용하기 전에 PostgreSQL에서 총 결과 수를 효율적으로 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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