나는 날짜별로 정렬 된 데이터 묶음을 가지고 있으며 각 테이블은 단 한 달 만의 데이터를 보유하고있다. (이 이유는 질의 시간을 줄이기 위해서 매월 테이블에서 수백만 행에 대해 말하고있는 것입니다.)MySQL 다중 테이블 쿼리
예를 들어,
data_01_2010 holds data from 2010-01-01 to 2010-01-31
data_02_2010 holds data from 2010-02-01 to 2010-02-28
때때로 특정 기간에 따라 이러한 표를 쿼리해야합니다. 이제는 범위가 여러 달에 걸쳐있는 경우입니다. 2010-01-01 to 2010-02-28 다음 두 테이블을 모두 쿼리해야합니다.
단일 쿼리로이 작업을 수행 할 수 있습니까? 예를 들어 처럼 :
SELECT *
FROM data_01_2010, data_02_2010
WHERE date BETWEEN '2010-01-01' AND '2010-02-28'
위의 쿼리의 문제는 열 날짜 열이 두 테이블에 존재 있기 때문에, 어느 모호 말한다는 것이다. (테이블은 같은 구조를 가짐)
이렇게 하나의 쿼리로 달성 할 수 있습니까? 아니면 각 테이블에 대해 별도로 쿼리해야합니까?
내가 PHP로 작성된 논리를 가지고있다. 나는 결코 UNIONS에 대해 생각하지 않습니다. UNION이 쿼리 성능에 미치는 영향은 무엇입니까? – feketegy
UNION을 사용하면 조금 더 느립니다. 결과를 비교하고 중복을 제거하기 때문입니다. 그러나 UNION ALL은 덤프 검사를 무시합니다. 둘 다 MySQL이 임시 테이블을 생성해야하는데, 약간의 오버 헤드가 있지만 그리 많지는 않습니다. http://www.mysqlperformanceblog.com/2007/10/05/union-vs-union-all-performance/ – adharris
을 참조하십시오. 그러면 아마도 여러 쿼리를 사용하는 것이 더 좋을까요? – feketegy