> 데이터 베이스 > MySQL 튜토리얼 > 매우 큰 데이터베이스 테이블에서 효율적으로 행 수를 계산하려면 어떻게 해야 합니까?

매우 큰 데이터베이스 테이블에서 효율적으로 행 수를 계산하려면 어떻게 해야 합니까?

Linda Hamilton
풀어 주다: 2025-01-14 17:01:45
원래의
654명이 탐색했습니다.

How Can I Efficiently Count Rows in Extremely Large Database Tables?

대형 테이블 행 개수 통계 최적화 전략

대규모 데이터베이스 테이블의 행 개수를 계산하면 성능 문제가 발생할 수 있습니다. 일부 기사에서는 SELECT COUNT(*) 사용을 주의해서 권장하지만 행과 열 수가 많은 테이블에서는 속도가 여전히 문제가 됩니다. 이 문서의 목적은 대규모 테이블의 행을 정확하게 계산하기 위해 데이터베이스 공급업체와 독립적인 방법을 탐색하는 것입니다.

데이터베이스 공급업체 독립 솔루션

가장 간단하고 안정적인 방법은 표준 COUNT(*) 기능을 사용하는 것입니다. 최신 데이터베이스 시스템은 행 수를 추정하는 데 충분한 데이터만 읽으면 되므로 대형 테이블에 대해서도 이 기능을 최적화합니다. 따라서 COUNT(*)이 선호되는 옵션입니다.

SQL Server 근사치(이 기사의 범위를 벗어남)

SQL Server에 대한 몇 가지 잠재적인 근사치가 있지만 이러한 방법은 이 문서의 범위를 벗어납니다.

기타 참고사항

  • COUNT(1)COUNT(PrimaryKey)는 행 수 측면에서 COUNT(*)과 동일합니다.
  • 테이블 파티셔닝을 사용하면 COUNT(*) 매우 큰 테이블의 성능을 향상시킬 수 있습니다.
  • 테이블이 자주 업데이트되는 경우 보류 중인 거래로 인해 COUNT(*)에서 가져온 행 수가 완전히 정확하지 않을 수 있습니다.

SQL 서버 예

약 14억 개의 행과 12개의 열이 있는 테이블의 경우 COUNT(*) 힌트와 함께 NOLOCK을 사용하는 다음 쿼리는 5분 46초 안에 완료됩니다.

1

<code class="language-sql">SELECT COUNT(*) FROM MyBigtable WITH (NOLOCK)</code>

로그인 후 복사

또는 시스템의 DMV(동적 관리 뷰)를 사용하여 다음 쿼리를 1초 이내에 완료할 수 있습니다.

1

2

3

4

5

6

<code class="language-sql">SELECT

   Total_Rows = SUM(st.row_count)

FROM

   sys.dm_db_partition_stats st

WHERE

    object_name(object_id) = 'MyBigtable' AND (index_id</code>

로그인 후 복사

(참고: 두 번째 SQL 문은 불완전하며 원본 텍스트에서 코드 일부가 누락되었습니다.)

위 내용은 매우 큰 데이터베이스 테이블에서 효율적으로 행 수를 계산하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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