Background Image

FORUM

조회 수 13998 추천 수 0 댓글 2
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
서브쿼리에 정렬된 값의 순서에 맞춰 필터링된 결과를 바탕으로 전체 쿼리 결과를 생성하고자 할 경우, 의도하지 않은 방향으로 쿼리 최적화가 이루어지는 것 같습니다. 즉 다음과 같은 쿼리가 있을 때,

select x.* from (
    select t.* from
    (
        select 1 v, 1 c from db_root
        union all select 2, 1 from db_root
        union all select 3, 0 from db_root
        union all select 4, 1 from db_root
        union all select 5, 1 from db_root
    ) t
    order by t.v for orderby_num() between 2 and 4
) x
where x.c = 1

이 쿼리에서 의도한 결과는 다음과 같습니다.
v c
2 1
4 1
그러나 의도와는 다르게 다음의 결과가 도출됩니다.
v c
2 1
4 1
5 1

즉, 서브쿼리의 ORDER BY 구문이 최적화를 거치면서 서브쿼리에 귀속하지않고 최종 결과에 대한 정렬 동작으로 잘못 처리되는 것 같습니다.

이 문제를 해결하기 위한 한가지 우회방법으로 서브쿼리에 불필요한 컬럼 정의를 넣는 방법인데요, 다음처럼 쿼리를 변경하는 것 입니다.

select x.* from (
    select t.*, orderby_num() from
    (
        select 1 v, 1 c from db_root
        union all select 2, 1 from db_root
        union all select 3, 0 from db_root
        union all select 4, 1 from db_root
        union all select 5, 1 from db_root
    ) t
    order by t.v for orderby_num() between 2 and 4
) x
where x.c = 1


그리고 일부 DBMS의 경우 서브쿼리에 ORDER BY 구문을 사용하는데 있어 제약이 있는 경우가 있어서 해당 내용에 대해 온라인 도큐먼트를 참고하려 했는데요, SELECT 구문의 서브쿼리 정의에는 <query statement>라는 모호한 내용만 있습니다. 도큐먼트 어디에도 <query statement>에 대한 정의가 없는데요, 제 생각에는 <query state>로 변경하는 것이 정황상 맞는 것 같습니다.

고쳐주세요!

  • ?
    cubebridge 2010.01.29 21:23
    지금 테스트 해보았습니다.
    사용하신 제품의 정확한 버전(cubrid_rel명령어로 확인이 가능합니다.)을 알려 주시기 부탁드립니다.
    현재 위의 쿼리 대로 R2.1버전에서 확인한 결과 기대하신 값과 동일한 값을 얻었습니다.
    확인 부탁드립니다.
  • ?
    asteroid 2010.01.30 00:10
    R2.0 입니다. R2.1의 릴리스노트를 보니 해결된 문제에 해당 내용이 있네요. 빠른 답변 감사드립니다!

List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 CUBRID 사용자를 위한 DBeaver 도구 출시 안내 admin 2024.04.23 65
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4465
1079 unloaddb / loaddb 실행할 때 clob파일을 유지할 수 있는 방법 있을까요? 2 file 김동현 2021.03.12 302
1078 데이터베이스 파일 이동 후 설정 변경 후 이상현상 1 노멤버 2019.04.18 301
1077 테이블 설명 기능 설치 3 abg 2018.05.29 300
1076 자동백업 시간 설정한 시간과 2시간 차이가 납니다. 1 coolkkm 2017.12.16 300
1075 데이터 load 시 schema 파일에서 문제가 발생합니다. 8 Atom 2022.03.27 300
1074 인덱스를 엉뚱한 걸 타고 있습니다??! 9 file Philip Park 2020.11.26 300
1073 php pdo_cubrid 실행이 안됩니다. 6 file smilena 2021.04.27 299
1072 php cubrid_driver 설치 에러 1 jslee 2022.04.23 299
1071 큐브리드 매니저 관리모드 로그인 중 에러가 발생했습니다. 2 연습용 2021.09.07 299
1070 CUBRID SHARD 문제 질문드립니다. 2 JayHan 2019.09.09 298
1069 ORDER BY ** ASC 조건과 offset 조건이 같이 있을 경우 발생되는 오류 문의 7 file 충이 2019.05.22 298
1068 postgresql에서 CUBRID로 전환이 가능한가요? 1 하인츠링게 2021.02.16 298
1067 DataReader.GetFieldType(0)에서 null 오류 발생건 5 린다 ㅋㅋ 2020.06.25 297
1066 where 절 IN 구문에 잘못된 서브쿼리 사용 시의 비정상 동작 문의 1 Raven 2021.04.23 297
1065 큐브리드 9.3) 터미널을 이용하여 큐브리드 DB ubloaddb시 object 파일 깨짐 현상 3 file 솨솨솨 2021.03.18 297
1064 db_class에서 테이블 목록 조회시 2 cncn 2023.07.03 297
1063 GROUP_CONCAT_MAX_LEN 을 32M로 변경하고 싶습니다. 1 폭스공이삼 2020.07.14 296
1062 Internal system failure 4 봉보로봉봉 2017.07.27 296
1061 큐브리드 데이터베이스 복구 관련 질문 5 ots21 2021.05.14 296
1060 erwin reverse engineering 1 dasomoh 2020.07.08 296
Board Pagination Prev 1 ... 142 143 144 145 146 147 148 149 150 151 ... 200 Next
/ 200

Contact Cubrid

대표전화 070-4077-2110 / 기술문의 070-4077-2113 / 영업문의 070-4077-2112 / Email. contact_at_cubrid.com
Contact Sales