다른 테이블 (아래 예제)의 데이터로 한 테이블의 데이터 하위 집합에 참여하려고하고 있으며 성능 관점에서 볼 때 가장 좋은 방법은 무엇이며 가장 확장 성이 뛰어난 것이 무엇인지 궁금합니다.어디에서 데이터를 조인하거나 where 절에 넣으시겠습니까?
내가 가입하려고하는 테이블은 다음과 같습니다 (다른 테이블은 이미 쿼리에 있음).
vid kid uid 1 34 12 1 34 15 2 22 18 2 34 18 2 22 15
내 쿼리 내가 좀 A는 곳으로 가입 혼합있어 것입니다 내가
SELECT * FROM similar RIGHT OUTER JOIN(SELECT event.stuff, eventdate.stuffshows FROM events JOIN evendate ON events.eid=eventdate.eid WHERE user.vid=events.vid AND user.uid=15 AND user.kid=22 location= 'Paris' AND event.date BETWEEN '2009-08-14' AND '2009-08-17' GROUP BY event.date ORDER BY event.date LIMIT 0 , 5 ) mystuff ON event.bid = similar.id AND event.date=similar.date
내 관심사에 그것을 만들 수 있다고 생각이
SELECT * FROM similar RIGHT OUTER JOIN(SELECT event.stuff, eventdate.stuffshows FROM events JOIN evendate ON events.eid=eventdate.eid WHERE location= 'Paris' AND event.date BETWEEN '2009-08-14' AND '2009-08-17' GROUP BY event.date ORDER BY event.date LIMIT 0 , 5 ) mystuff ON event.bid = similar.id AND event.date=similar.date
같다. 성능면에서 user.vid = events.vid에 대한 두 번째 JOIN을 설정하는 것이 가치가 있습니까? 또는 조인이 아니라 WHERE를하는 것이 더 나은가?
이 문제에 대한 제안이 있으십니까?
pedalpete : 나는 마지막 WHERE 절 (event.date = similar.date)에 의해 약간 벗어났습니다. 이 문을 OUTER JOIN 조건이나 하위 쿼리 자체로 이동하는 것이 좋습니다. 그대로 event.date가 외부 쿼리에 표시되어서는 안됩니다. –