저는 현재 MySQL의 문제에 대한 답을 생각하고 있습니다. 제발 도와주세요, 당신은 나의 유일한 희망입니다!MySQL 쿼리 2 개의 관계 테이블이있는 2 개의 테이블을 결합하십시오.
기본 사항을 철저히 분석하면 "사람"과 "활동"이라는 두 개의 테이블이 있습니다. 이 두 테이블이 두 개의 다른 관계 테이블에 의해 조인 될 수 있습니다 (긴 이야기와 많은 데이터가 포함됨). people_activity 및 entity_activity 활동 레코드에 연결된 사람들 레코드를 가져 오는 활동 테이블에 대한 쿼리를 수행해야합니다. 두 관계 테이블을 기반으로합니다.
이
내가 무슨이지만, 많은 데이터에 다량으로 느리다 :select * from activity
left join peopleactivity on peopleactivity.activityid = activity.activityid
left join entityactivity on entityactivity.activityid = activity.activityid
left join people on (peopleactivity.peopleid = people.peopleid OR
entityactivity.entityid = people.peopleid)
좀 더 노트 - 나는 또한이 개 관계 테이블의 결과를 결합하는 뷰를 작성하는 대신 가입 시도 이보기를 통해 사람들과 활동을 이것은 또한 작동하지만 여전히 또한 내가이 -like 노동 조합을 시도 주요 두통
는 관계/s의 작업이 하나 개의 테이블에 consolodate하는 방법입니다 변경
대규모 느리다 -
select * from activity
left join peopleactivity on peopleactivity.activityid = activity.activityid
left join people on (peopleactivity.peopleid = people.peopleid)
union
select * from activity
left join peopleactivity on peopleactivity.activityid = activity.activityid
left join people on (entityactivity.entityid= people.peopleid)
도 작동하지만 다른 이유로 인해 문제가 발생합니다. 너무 많은 기본을 변경하지 않고 하나의 쿼리에서이 작업을 수행해야합니다.
누구나 내가 놓친 놀라운 아이디어가 아주 많습니까?
2)를 사용하여 내부 조인 대신 왼쪽 조인의
두 번째 쿼리 (UNION)에서 두 개의 동일한 쿼리를 UNION하는 것처럼 보입니다. 나는 그 중 하나가'peopleactivity' 테이블보다는'entityactivity' 테이블을 포함해야한다고 생각하고 있습니다. 또한 UNION ALL 연산자는 UNION 연산자보다 몇 가지 중요한 성능 이점을 가질 수 있습니다. – spencer7593
각 개별 쿼리의 성능은 어떻습니까? 각자는 "매우 느린가"아니면 따로 따로 "blazingly fast"인가?각 쿼리 및 결합 된 쿼리에 대한 EXPLAIN은 사용되는 인덱스와 같은 질문에 응답합니다. 경우에 따라 두 가지 별도의 쿼리가 필요합니다. – spencer7593