* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
Window10 64bit | |
CUBRID Manager 10.2.0.0001 (64bit) | |
java, jdbc |
* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.
에러 내용 및 재현 방법 | 재현 가능한 Source와 SQL |
관련 테이블(인덱스, 키정보 포함) 정보 | CUBRID 홈 디렉토리 아래 log 디렉토리 압축 |
-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------
SELECT 구문의 A 쿼리와 B 쿼리가있습니다.
검색 단위는 5000으로 되어있고
A 쿼리를 실행할땐 하단 콘솔창에 [검색 건수 : 26097]
B 쿼리를 실행할땐 하단 콘솔창에 [검색 건수 : 5000] 후 다음 질의 실행 버튼을 눌러야만
[검색 건수 : 5000] , [검색 건수 : 5000] ............ [검색 건수 : 1097]
이렇게 데이터가 조회되는데
둘 쿼리의 차이점은
A쿼리는 join 을 사용하지 않고 테이블을
SELECT ~ FROM ㄱ,ㄴ,ㄷ WHERE
B쿼리는 join을 사용하고
SELECT ~ FROM ㄱ INNER JOIN ㄴ INNER JOIN ㄷ
이런식으로 사용했는데
검색 처리가 다른 이유는 왜일까요?
데이터 조회 속도 처리때문에 작업하는중인데
검색단위가 정해져있어서 속도가 얼만큼 나오는지 예측이안되네요;
limit을 이용하여 속도를 보면될까요?
현재 CUBRID Manager는 Query Editor에서 사용자가 입력한 쿼리를 판단하여 SQL에 where 절이 있을 경우, rownum을 사용하지 않고 쿼리를 실행합니다.
SQL문에 where 절이 없을 경우, "결과 창의 검색 단위 설정" 값에 맞춰 rownum이 SQL문에 추가된 후 쿼리가 실행됩니다.
"질의 결과 탭"을 확인해 보시면 rownum이 추가된 상태로 쿼리가 실행되는지 확인할 수 있습니다.