>데이터 베이스 >MySQL 튜토리얼 >여러 테이블에서 데이터를 검색하기 위해 MySQL에서 UNION과 LIMIT를 효율적으로 결합하는 방법은 무엇입니까?

여러 테이블에서 데이터를 검색하기 위해 MySQL에서 UNION과 LIMIT를 효율적으로 결합하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2025-01-14 13:06:43394검색

How to Efficiently Combine UNION and LIMIT in MySQL to Retrieve Data from Multiple Tables?

MySQL 쿼리 최적화: 다중 테이블 데이터 검색을 위해 UNION과 LIMIT 결합

여러 테이블에서 데이터를 검색하려면 UNION을 사용하여 결과를 결합하고 LIMIT으로 행 수를 제한해야 하는 경우가 많습니다. 이 가이드는 이를 달성하기 위한 효율적인 접근 방식을 보여줍니다.

두 개의 특정 회사에서 총 20개의 채용 정보를 추출해야 하며 회사당 최대 10개의 채용 정보를 추출해야 하는 시나리오를 생각해 보세요. 다음과 같은 최적화된 쿼리가 이를 수행합니다.

<code class="language-sql">(
  SELECT c.name, j.title, j.`desc`, j.link 
  FROM jobs_job j
  INNER JOIN companies_company c ON j.company_id = c.id
  WHERE c.name = 'Company1'
  ORDER BY name, title
  LIMIT 0, 10
) UNION ALL
(
  SELECT c.name, j.title, j.`desc`, j.link 
  FROM jobs_job j
  INNER JOIN companies_company c ON j.company_id = c.id
  WHERE c.name = 'Company2'
  ORDER BY name, title
  LIMIT 0, 10
)</code>

효율성의 핵심은 각 LIMIT 문 안에 SELECT를 배치하는 것입니다. 이렇게 하면 각 회사의 결과가 독립적으로 10개 행으로 제한됩니다. 그런 다음 UNION ALL 연산자(여기에서는 속도를 위해 사용되며 UNION는 중복 항목을 제거함)는 이러한 제한된 결과 세트를 결합하여 최종 출력에 최대 20개의 행을 보장합니다.

각 하위 쿼리 내의 ORDER BY 절은 노동조합 운영 이전에 회사명, 직위별로 정렬된 결과를 유지합니다. 이렇게 하면 최종 결합 결과 집합이 정렬된 상태로 유지됩니다. 이 방법은 제한을 적용하기 전에 모든 결과를 처리해야 하는 LIMIT 작업 후에 UNION을 적용하는 것보다 훨씬 효율적입니다.

위 내용은 여러 테이블에서 데이터를 검색하기 위해 MySQL에서 UNION과 LIMIT를 효율적으로 결합하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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