select
b.entry_id,
b.assign_id,
a.profile_type,
a.profile_id,
a.profile_name,
a.profile_status,
b.entry_type,
b.assign_id,
c.chapter_name,
d.section_name,
h.group_name,
i.programme_name,
k.subjectprogramme_name,
j.masterprogramme_name,
l.developmentprogramme_name
from profile_master a
left join profile_assign b on (a.profile_id = b.profile_id)
left join chapter_master c
on (b.entry_id = c.chapter_id and b.entry_type='chapter')
left join section_master d
on (b.entry_id = d.section_id and b.entry_type='section')
left join group_master h
on (b.entry_id = h.group_id and b.entry_type='Group'
and h.year_id='".$this->year."')
left join programme_master i
on (b.entry_id = i.programme_id and b.entry_type='Programme'
and i.year_id='".$this->year."')
left join subjectprogramme_master k
on (b.entry_id = k.subjectprogramme_id and b.entry_type='subjectProgramme'
and k.year_id='".$this->year."')
left join masterprogramme_master j
on (b.entry_id = j.masterprogramme_id and b.entry_type='masterProgramme'
and j.year_id='".$this->year."')
left join developmentprogramme_master l
on (b.entry_id = l.developmentprogramme_id
and b.entry_type='developmentProgramme')
-1
A
답변
0
1) 왼쪽 조인에서 코드 변환을 제거하십시오. 필터링
2)가 UNION 또는 separetely 각 엔티티 7 개 쿼리 (추측)에 대한 조항은 귀하의 경우
0
이 데이터베이스에 직접 액세스하지 않고 대답하기 어려운 질문이다 훨씬 더 좋을 것 WHERE 때문에, 사용 나는 일반적인 대답을 시도 할 것이다!
- 이 쿼리에서 "설명"을 사용하면 MySQL에서 일부 인덱스를 제안하는지 확인할 수 있습니다. 의심 할 여지없이 몇 가지 열을 여러 번 액세스하기 때문에 몇 가지를 제안 할 것이고 때로는 색인이 가장 느린 속도로 향상되기도합니다.
OUTER JOIN
$this->year
에 대해 많은 수표를 사용하고 있으므로 몇 가지 복합 색인을 제안합니다. 예- 이 쿼리가 실행되는 경우 : programme_id 및 year_id이 같은 인덱스 물론
에 모두, 예를 들어, 당신은 출력을 사용하는 방법에 따라 다릅니다 수있는 솔루션이있다 자주 대기하는 사용자에게는 문제가 될만큼 자주 발생하지만 문제가되지 않는 대기 시간은 드물게 발생합니다 (예 : 지난 밤 데이터를 기반으로 실행하는 것이 좋습니다). 하룻밤 사이에 실행하고 결과를 캐싱 할 수 있습니다.
0
당신은 정말 단 조건이 전달 될 때, 내가 지금처럼 부속 선택을하는 것이 좋습니다 가입 않습니다
SELECT
b.entry_id,
b.assign_id,
a.profile_type,
a.profile_id,
a.profile_name,
a.profile_status,
b.entry_type,
b.assign_id,
CASE b.entry_type
WHEN 'chapter' THEN SELECT(c.chapter_name FROM c WHERE b.entry_id = c.chapter_id)
WHEN 'section' THEN SELECT(d.section_name FROM d WHERE b.entry_id = d.section_id)
WHEN ....
END as name
from profile_master a
left join profile_assign b on (a.profile_id = b.profile_id)
당신이 출력은 동일하게 가지고 주장하는 경우에, 당신이 선택을 포장 할 필요가 바깥 쪽을 다음과 같이 선택하십시오 :
SELECT
entry_id, assign_id, ......
, CASE entry_type WHEN 'chapter' THEN name ELSE null END as chapter_name
, CASE entry_type WHEN 'section' THEN name ELSE null END as section_name
FROM
(select statement like above) sub
관련 문제
- 1. 레이크 속도를 높이는 방법이 있습니까?
- 2. COM의 속도를 높이는 방법이 있습니까?
- 3. 이 mysql 속도를 높이는 방법이 있습니까?
- 4. iostreams가 느립니다. 속도를 높이는 방법이 있습니까?
- 5. 이 방법의 속도를 높이는 방법이 있습니까?
- 6. WiX 빌드의 속도를 높이는 방법이 있습니까?
- 7. 이 MongoDB 쿼리의 속도를 높이는 방법은 무엇입니까?
- 8. PostgreSQL에서 복잡한 쿼리의 속도를 높이는 방법
- 9. 데이터로드 속도를 높이는 방법
- 10. 논문에서 업데이트 속도를 높이는 방법
- 11. Objective-C 문자열 할당 속도를 높이는 방법이 있습니까?
- 12. Seek가 내 mysql 쿼리의 속도를 높이는 데 도움이됩니다.
- 13. 안드로이드에서 스케일링 속도를 높이는 방법
- 14. "max() - searching"SQL 하위 쿼리의 속도를 높이는 방법
- 15. 섬네일 프레임 속도를 느리게 만드는 ffmpeg 오류
- 16. 페이지로드 속도를 높이는 방법
- 17. 스크롤바의 속도를 높이는 방법
- 18. PHP 단순화 속도를 높이는 방법
- 19. MySQL 쿼리 속도를 높이는 방법
- 20. 내 실행 속도를 높이는 방법
- 21. 내 응용 프로그램의 속도를 높이는 방법은 무엇입니까?
- 22. DNN 사이트 속도를 높이는 방법
- 23. 처리 속도를 높이는 프로그램 논리
- 24. 안드로이드에서 목록보기로드 속도를 높이는 방법?
- 25. PHP 메일 속도를 높이는 방법
- 26. 콤보 박스 속도를 높이는 방법
- 27. mysql에서 neo4j의 삽입 속도를 높이는 방법은 무엇입니까?
- 28. ADB 설치 속도를 높이는 방법은 무엇입니까?
- 29. 컴퓨터에 메모리를 늘리거나 C#으로 속도를 높이는 앱을 만드는 방법이 있나요?
- 30. Java에서 포트 443 스캔 속도를 높이는 방법
정말로 모든 외부 조인이 필요합니까? 일반적으로 조인 기준이 일치하지 않으면 데이터가 거의 필요하지 않습니다. – 0xCAFEBABE
profile_assign 테이블의 profile_id에 인덱스를 만들면 spped가 증가합니다. 이것이 올바른 방법입니다. – user993516