>  기사  >  데이터 베이스  >  MySQL에서 그룹화된 데이터의 첫 번째 및 마지막 레코드를 효율적으로 검색하는 방법은 무엇입니까?

MySQL에서 그룹화된 데이터의 첫 번째 및 마지막 레코드를 효율적으로 검색하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-08 20:26:02514검색

How to Efficiently Retrieve First and Last Records of Grouped Data in MySQL?

MySQL에서 집계 함수를 사용하여 그룹화된 데이터의 첫 번째 및 마지막 레코드 검색

MySQL에서 집계 함수를 사용하여 그룹화된 레코드에서 데이터를 가져올 때, 그룹의 첫 번째 레코드와 마지막 레코드를 검색하는 것은 어려울 수 있습니다. 여러 쿼리로 이를 수행할 수 있지만 대규모 테이블의 경우 비효율적일 수 있습니다.

이 프로세스를 최적화하기 위해 MySQL은 GROUP_CONCATSUBSTRING_INDEX 함수를 사용하여 보다 효율적인 솔루션을 제공합니다. .

GROUP_CONCAT 및 SUBSTRING_INDEX 사용

이러한 함수를 함께 사용하면 그룹의 값을 연결한 다음 SUBSTRING_INDEX를 사용하여 첫 번째 값과 마지막 값을 추출할 수 있습니다. 방법은 다음과 같습니다.

SUBSTRING_INDEX(GROUP_CONCAT(CAST(open AS CHAR) ORDER BY datetime), ',', 1) AS open
SUBSTRING_INDEX(GROUP_CONCAT(CAST(close AS CHAR) ORDER BY datetime DESC), ',', 1) AS close

작동 방식:

  • GROUP_CONCAT은 모든 개시 또는 종료 값을 단일 문자열로 연결합니다. 날짜/시간 열을 기준으로 정렬됩니다.
  • SUBSTRING_INDEX는 쉼표(',')로 분할하여 연결된 문자열에서 첫 번째 값과 마지막 값을 추출합니다. '1' 인수는 첫 번째 또는 마지막 발생을 나타냅니다.

예:

다음 쿼리를 고려하세요.

SELECT MIN(low_price), MAX(high_price),
SUBSTRING_INDEX(GROUP_CONCAT(CAST(open AS CHAR) ORDER BY datetime), ',', 1) AS open,
SUBSTRING_INDEX(GROUP_CONCAT(CAST(close AS CHAR) ORDER BY datetime DESC), ',', 1) AS close
FROM symbols
WHERE date BETWEEN(.. ..)
GROUP BY YEARWEEK(date)

이것은 쿼리는 각 그룹의 첫 번째(열린) 레코드와 마지막(닫은) 레코드를 효율적으로 검색하여 대규모 테이블의 처리 시간을 최소화합니다.

위 내용은 MySQL에서 그룹화된 데이터의 첫 번째 및 마지막 레코드를 효율적으로 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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