>데이터 베이스 >MySQL 튜토리얼 >MySQL의 하위 쿼리에서 여러 열을 효율적으로 선택하려면 어떻게 해야 합니까?

MySQL의 하위 쿼리에서 여러 열을 효율적으로 선택하려면 어떻게 해야 합니까?

DDD
DDD원래의
2024-10-29 09:11:30568검색

 How Can I Efficiently Select Multiple Columns from Subqueries in MySQL?

MySQL의 하위 쿼리에서 여러 열 선택

각 속성에 대한 ID와 값(번역)을 검색해야 하는 시나리오가 있습니다. 지정된 언어로. 그러나 일부 속성은 해당 언어로 번역되지 않을 수 있습니다.

하위 쿼리에 대한 성능 고려 사항

한 가지 접근 방식은 예제에 표시된 대로 각 열에 하위 쿼리를 사용하는 것입니다. :

select attribute, 
(select id from attributeTranslation where attribute=a.id and language=1),
(select translation from attributeTranslation where attribute=a.id and language=1), 
from attribute a;

이 접근 방식은 작동하지만 MySQL에서 하위 쿼리를 최적화할 수 없으면 성능에 대한 우려가 있습니다.

가상 테이블 사용

보다 효율적인 솔루션은 가상 테이블을 활용하는 것입니다. 하위 쿼리를 괄호로 묶어 쿼리의 다른 테이블에 조인할 수 있는 가상 테이블을 생성할 수 있습니다.

SELECT a.attr, b.id, b.trans, b.lang
FROM attribute a
JOIN (
 SELECT at.id AS id, at.translation AS trans, at.language AS lang, a.attribute
 FROM attributeTranslation at
) b ON (a.id = b.attribute AND b.lang = 1)

이 예에서 가상 테이블 b에는 원하는 ID와 번역 열이 포함되어 있습니다. 속성 테이블에 결합된 attributeTranslation 테이블 a. 이렇게 하면 여러 하위 쿼리가 필요하지 않고 성능이 향상됩니다.

결론

가상 테이블을 활용하면 하위 쿼리에서 여러 열을 효율적으로 선택할 수 있을 뿐만 아니라 생성할 수 있는 유연성도 제공됩니다. 복잡한 조인 작업. 이 접근 방식은 성능을 고려할 때 특히 유용합니다.

위 내용은 MySQL의 하위 쿼리에서 여러 열을 효율적으로 선택하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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