> 데이터 베이스 > MySQL 튜토리얼 > 대규모 데이터베이스의 각 범주에서 최신 항목을 효율적으로 검색하기 위해 SQL 쿼리를 최적화하려면 어떻게 해야 합니까?

대규모 데이터베이스의 각 범주에서 최신 항목을 효율적으로 검색하기 위해 SQL 쿼리를 최적화하려면 어떻게 해야 합니까?

Barbara Streisand
풀어 주다: 2025-01-22 01:51:09
원래의
357명이 탐색했습니다.

How Can I Optimize SQL Queries to Efficiently Retrieve the Newest Items from Each Category in a Large Database?

대량 데이터 세트에 대한 SQL 쿼리 성능 향상

특히 대규모 데이터베이스와 복잡한 데이터 검색을 처리할 때 데이터베이스 성능을 유지하려면 효율적인 SQL 쿼리가 필수적입니다. 이는 상호 연결된 여러 테이블로 작업할 때 특히 중요합니다.

과제: 카테고리별 최신 항목 검색

아이디별로 분류된 항목을 저장하는 데이터베이스를 상상해 보세요. 목표는 가장 최근에 추가된 4개의 항목과 함께 각 카테고리를 표시하는 것입니다. 카테고리별로 여러 쿼리를 사용하는 기존 방법은 특히 카테고리 수가 많은 경우 데이터베이스 부하가 과도하게 발생합니다.

최적화된 쿼리: 그룹화 및 조인 활용

다음 최적화된 쿼리는 외부 조인과 그룹화를 사용하여 단일 데이터베이스 패스에서 원하는 데이터를 검색합니다.

<code class="language-sql">SELECT i1.*
FROM item i1
LEFT OUTER JOIN item i2
  ON (i1.category_id = i2.category_id AND i1.item_id < i2.item_id)
GROUP BY i1.item_id
HAVING COUNT(*) < 4;</code>
로그인 후 복사

이 쿼리는 각 항목(i1)을 동일한 카테고리 내의 최신 항목(i2)과 비교합니다. 최신 항목이 4개 미만인 경우 i1이 결과에 포함됩니다.

대체 접근 방식

각 범주 내 행 번호 지정을 위한 MySQL 사용자 변수와 같은 다른 방법은 대체 솔루션을 제공합니다.

<code class="language-sql">SELECT *
FROM (
    SELECT i.*, @r := IF(@g = category_id, @r+1, 1) AS rownum, @g := category_id
    FROM (SELECT @g:=null, @r:=0) AS _init
    CROSS JOIN item i
    ORDER BY i.category_id, i.date_listed
) AS t
WHERE t.rownum <= 4;</code>
로그인 후 복사

MySQL 8.0.3 이상의 경우 SQL 창 함수는 표준화된 접근 방식을 제공합니다.

<code class="language-sql">WITH numbered_item AS (
  SELECT *, ROW_NUMBER() OVER (PARTITION BY category_id ORDER BY item_id DESC) AS rownum
  FROM item
)
SELECT * FROM numbered_item WHERE rownum <= 4;</code>
로그인 후 복사

성능상의 이점

이러한 최적화된 쿼리는 카테고리 수가 증가함에 따라 성능을 크게 향상시킵니다. 데이터베이스 로드를 최소화하고 리소스 사용을 최적화함으로써 애플리케이션은 광범위한 데이터 세트가 있는 경우에도 효율적인 데이터 검색을 보장합니다.

위 내용은 대규모 데이터베이스의 각 범주에서 최신 항목을 효율적으로 검색하기 위해 SQL 쿼리를 최적화하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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