시작일자는 포함하면서 종료일자를 누락하는 경우가 있다. 종료일자가 없다면 복잡한 SQL문장이 구성되어 성능도 저하되기 때문에 종료일도 반드시 속성에 포함시켜 SQL문도 간결하고 성능도 보장해야 한다.

종료일이 없는 SQL문의 예> 

SELECT 필드1, 필드2
FROM 테이블명
WHERE 테이블명.시작일자 = (SELECT MAX(테이블명.시작일자) FROM 테이블명 WHERE 테이블명.시작일자 <= '조건일') 

SELECT 필드1, 필드2
FROM 테이블명 AS t1, (SELECT MAX(시작일자) FROM 테이블명 WHERE 시작일자 <= '조건일') AS t2
WHERE t1.시작일자 = t2.시작일자


하지만, 종료일을 넣게 되면 좀 더 간단해진다.

SELECT 필드1, 필드2
FROM 테이블명
WHERE 시작일자 <= '조건일' AND 종료일 > '조건일'


더불어서 최신여부 속성을 넣게 되면 GROUP BY 절을 사용하지 않아 성능이 빨라지게 된다.

+ Recent posts