데이터의 존재여부만 확인하면 되는데 불필요하게 전체 건수를 count 하는 경우다.
SELECT COUNT(*) AS CNT FROM BIG_EMP
WHERE DEPTNO='60' AND MGR='7698';
If(rs.getString("CNT") > 0){
…
}
Or
SELECT * FROM BIG_EMP
WHERE DEPTNO='60' AND MGR='7698';
If(rs.size() > 0){
…
}
rownum을 사용하여 부분처리(하나만 조회)를 함으로서 성능 향상을 할 수 있다.
SELECT COUNT(*) CNT FROM EMP
WHERE DEPARTMENT='SALES'
AND LOCATION='SEOUL' AND ROWNUM <= 1;
If(rs.getString("CNT") > 0){
…
}
MS-SQL 인 경우 Top N 사용
조건절을 만족하면 첫번째 레코드를 만나는 순간 True를 반환하고 서브쿼리를 종료하는 EXISTS 서브쿼리를
사용하면 성능 향상을 하는 방법도 있다.
SELECT COUNT(*) FROM DUAL
WHERE EXISTS(
SELECT ‘x’ FROM BIG_EMP
WHERE DEPT='60' AND MGR='7698'
);
If(rs.getString("CNT") > 0){
…
}
여러가지 DB에 유연하도록 하기위해서 EXISTS 를 추천한다.