2011-03-03 4 views
0

나는이여러 개의 간단한 조인 대. 여러 간단한 선택은

ID  post_id  meta_key  meta_value 
1  1   key_01  val 
2  1   key_02  val 
3  1   key_03  val 

처럼 보이는 meta 테이블을 가지고 있고 나는 3 키와 값을 얻을 싶어요. JOIN을 사용하고 SELECT를 사용하는 것이 더 느린가요? 예를 들어,이 너무 쉽게 만들 것 가입 :

SELECT M1.meta_value AS key_01, M2.meta_value AS key_02, M3.meta_value AS key_04 
FROM `meta` AS M1 
    JOIN `meta` M2 ON M2.post_id = 1 AND M2.meta_key = 'key_02' 
    JOIN `meta M3 ON M3.post_id = 1 AND M3.meta_key = 'key_03' 
WHERE M1.meta_key = 'key_01' 

나는 그 어떤 테스트를하지 않은,하지만 당신은 아이디어를 얻을 것이다.

+0

왜 열이 필요한가? 원하는 세 개의 meta_key 값을 기반으로 레코드를 가져 오는 더 간단한 쿼리로, 응용 프로그램이 값을 적절히 추출하도록합니다. –

답변

1

Ileive JOINS는 중첩 된 SELECTS를 사용하는 것보다 효율적입니다. 또한 외래 키 열 (조인 된 열)을 인덱싱하면 성능이 향상됩니다. 따라서 post_id 및 meta_key에 대한 색인을 표시하십시오. 인덱스는 INSERT 성능을 저하시킬 수 있으므로이를 고려하십시오.

1

나는 하위 엔진 및/또는 공용체를 수행 할 때보다 조인을 사용할 때 mysql 엔진에 좋은 쿼리 계획을 생성 할 수있는 좋은 기회가 있다고 생각한다.

관련 문제