> 데이터 베이스 > MySQL 튜토리얼 > MySQL PARTITION BY 자구

MySQL PARTITION BY 자구

WBOY
풀어 주다: 2023-08-29 21:25:02
앞으로
1677명이 탐색했습니다.

MySQL PARTITION BY 子句

Partition By 절을 사용하면 쿼리 성능을 향상시킬 수 있습니다. 이는 스토리지 요구 사항을 줄이고 데이터 관리 효율성을 향상시킵니다. 큰 테이블을 분할하면 데이터의 작은 부분에만 액세스하는 쿼리를 더 빠르게 실행할 수 있습니다. 또한 파티셔닝은 백업 및 복구 시간을 줄여줍니다. 이번 글에서는 MySQL의 Partition By 절에 대해 구문과 다양한 예제를 통해 설명하겠습니다.

소개

PARTITION BY 절의 목적은 테이블의 행을 별도의 파티션으로 그룹화하는 것입니다. 이는 동일한 파티션의 다른 행을 사용하여 파티션 내의 특정 행에 대해 계산을 수행할 때 특히 유용합니다.

PARTITION BY 절은 항상 OVER() 절 내에서 사용해야 합니다. PARTITION BY 절에 의해 생성된 파티션을 창이라고도 합니다. 이 절은 특히 RANK(), LEAD() 및 LAG()와 같은 창 함수에서 작동합니다.

OVER() 절에서 PARTITION BY 절을 제외하면 테이블 전체가 하나의 파티션으로 처리됩니다.

문법

으아악

order_clause 및frame_clause는 문법의 선택적 구성 요소입니다.

MySQL에서 Partition 절의 표현식은 열 이름이거나 내장 함수일 수 있습니다. 그러나 표준 SQL에서는 표현식에 열 이름만 허용됩니다.

"해커" 테이블을 예로 들어보겠습니다 -

h_id

h_name

challenge_id

점수

3

라주

111

20

2

미슈레쉬

111

80

5

루드라

112

40

5

모한

114

90

4

로한

112

30

1

소한

112

40

각 챌린지에서 각 해커의 순위를 결정해야 합니다. 즉, 챌린지에 참여한 모든 해커와 해당 챌린지에서의 각자의 순위를 나열해야 합니다.

이를 달성하기 위해 다음 쿼리를 사용합니다.

으아악

이 쿼리에서 partition by 절은 테이블을 Challenge_id별로 그룹화합니다.

order by 절은 각 파티션의 해커를 점수 내림차순으로 정렬합니다.

over() 절은 창 함수 Rank()에 대해 테이블 ​​행을 분할하고 정렬하는 방법을 지정합니다.

창 함수density_rank()는 챌린지의 순서가 지정된 파티션에 있는 각 해커에게 순위를 할당합니다. 두 명의 해커가 동일한 점수를 갖고 있는 경우 동일한 순위가 할당됩니다.

결과 출력에는 모든 해커 목록과 각 챌린지에 대한 해당 순위가 표시됩니다. -

challenge_id

h_id

h_name

점수

랭킹

111

2

미슈레쉬

80

1

111

3

라주

20

2

112

루드라

40

1

112

1

소한

40

1

112

4

로한

30

2

114

5

모한

90

1

그래서 우리는 모든 해커 목록과 각 개별 챌린지에서의 순위를 얻을 수 있었습니다.

PARTITION BY 절 사용법

  • 파티션 내의 특정 행에 대한 계산을 수행하려면 테이블의 행을 별도의 파티션으로 그룹화하세요.

  • 저장 공간 요구 사항을 줄이고 데이터 관리 효율성을 향상시킵니다.

  • 데이터의 일부에만 더 빠르게 액세스하는 쿼리를 실행하여 쿼리 성능을 향상하세요.

  • 백업 및 복구 시간을 줄입니다.

결론

MySQL의 PARTITION BY 절은 테이블의 행을 별도의 파티션으로 그룹화하여 쿼리 성능을 향상시키고 스토리지 요구 사항을 줄이는 데 유용한 도구입니다. 이 절은 특히 RANK(), LEAD() 및 LAG()와 같은 창 함수에서 작동합니다. 구문은 간단하며 절에 사용되는 표현식 유형에 유연성을 허용합니다. 위의 예에서는 각 고객의 총 매출을 계산할 때 PARTITION BY 절의 기능을 보여줍니다. 이 강력한 기능을 활용함으로써 사용자는 데이터베이스 성능을 최적화하고 데이터 관리성을 향상시킬 수 있습니다.

위 내용은 MySQL PARTITION BY 자구의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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