집 >데이터 베이스 >MySQL 튜토리얼 >대규모 SQL 테이블에서 중복 행을 효율적으로 제거하는 방법은 무엇입니까?
대규모 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>
이 쿼리는 field1
및 field2
을 기준으로 행을 비교하여 중복 항목을 효율적으로 제거합니다. 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!