>데이터 베이스 >MySQL 튜토리얼 >대규모 SQL 테이블에서 중복 행을 효율적으로 제거하는 방법은 무엇입니까?

대규모 SQL 테이블에서 중복 행을 효율적으로 제거하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2025-01-14 06:50:42616검색

How to Efficiently Remove Duplicate Rows from a Large SQL Table?

대규모 SQL 테이블에서 중복 행을 효율적으로 제거

큰 테이블(수백만 행)에 고유 제약 조건을 추가하려면 중복 항목을 주의 깊게 처리해야 합니다. 표준 SQL 쿼리를 사용하여 중복 항목을 직접 삭제하는 것은 매우 느리고 리소스 집약적일 수 있습니다.

한 가지 간단한 방법은 테이블을 백업하고 고유 제약 조건을 추가한 다음 백업에서 테이블을 복원하는 것입니다. 이렇게 하면 고유한 행만 유지됩니다.

그러나 보다 세련된 접근 방식은 간결한 SQL 쿼리를 사용하여 삭제 프로세스를 최적화합니다.

<code class="language-sql">DELETE FROM table
USING table AS alias
WHERE table.field1 = alias.field1 AND table.field2 = alias.field2 AND
table.max_field < alias.max_field;</code>

이 쿼리는 field1field2을 기준으로 행을 비교하여 중복 항목을 효율적으로 제거합니다. max_field 값이 가장 높은 행을 유지하여 값이 낮은 중복 항목을 효과적으로 제거합니다. 예:

<code class="language-sql">DELETE FROM user_accounts
USING user_accounts AS ua2
WHERE user_accounts.email = ua2.email AND user_accounts.id < ua2.id;</code>

이 예에서는 중복된 이메일 주소를 제거하여 가장 높은 id 계정(아마도 가장 최근에 생성된 계정)을 유지합니다.

중요 사항: 직접 행 비교를 활성화하여 쿼리 효율성을 크게 향상시키는 USING 절은 PostgreSQL 전용 기능입니다. 다른 데이터베이스 시스템에는 대체 방법이 필요할 수 있습니다.

위 내용은 대규모 SQL 테이블에서 중복 행을 효율적으로 제거하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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