Background Image

FORUM

조회 수 16855 추천 수 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의 릴리스노트를 보니 해결된 문제에 해당 내용이 있네요. 빠른 답변 감사드립니다!

  1. CUBRID 사용자를 위한 DBeaver 도구 출시 안내

    Date2024.04.23 Byadmin Views144042
    read more
  2. 서브쿼리 질문

    Date2010.02.03 By초보 Views14122
    Read More
  3. 큐브리드 매니져에서 정수 쿼리 16진수 표시

    Date2010.02.03 By소라게 Views15608
    Read More
  4. 오류구문이 뜹니다.

    Date2010.02.03 By초보 Views11738
    Read More
  5. 로그 분석 툴 이용시 분석 에러발생합니다.

    Date2010.02.03 By노스 Views13569
    Read More
  6. mysql 구문변환

    Date2010.02.03 By초보 Views13245
    Read More
  7. 매니저에 쿼리 오류 메세지가 갑자기 안나옵니다.

    Date2010.02.03 By초보 Views12528
    Read More
  8. data_buffer_page 를 300000 이상으로 늘렸더니

    Date2010.02.02 By초보 Views13413
    Read More
  9. 큐브리드 커넥션 유지 시간

    Date2010.02.02 By초보 Views13258
    Read More
  10. 서브쿼리 ORDERBY_NUM() 최적화 문제

    Date2010.01.29 Byasteroid Views16855
    Read More
  11. ADO이용시 OLEDB Driver에러

    Date2010.01.29 Byflypig Views18622
    Read More
  12. QTADO와 OLEDB사용시 문제

    Date2010.01.29 Byflypig Views13064
    Read More
  13. 큐브리드 매니저에서 서브쿼리 날리면 값이 안나오는 문제

    Date2010.01.29 By지니보이 Views13896
    Read More
  14. 리스트 목록 갯수

    Date2010.01.28 Bywebdoors Views14361
    Read More
  15. Linux Centso5.1에 설치 중입니다.

    Date2010.01.27 ByPhilip Park Views12090
    Read More
  16. CUBRID-8.2.1.0215 CentOs5.1에 설치 중입니다.

    Date2010.01.27 ByPhilip Park Views14051
    Read More
  17. 대용량 mysql 데이타를 큐브리드 2008 로 마이그레이션 할때

    Date2010.01.27 By초보 Views14088
    Read More
  18. 8.2.1버전에서 SQuirreL SQL Client 접속 가능한가요?

    Date2010.01.26 ByPhilip Park Views16365
    Read More
  19. php게시판에 있는 php설치 글에서.<? phpinfo.php ?>사용이 가능한 구문인가요?

    Date2010.01.26 By뚱기 Views37884
    Read More
  20. cubrid 6.6.0 제공 문의

    Date2010.01.25 By이종욱 Views7
    Read More
  21. 문자집합 변경에 대하여

    Date2010.01.25 By쭈난 Views14665
    Read More
Board Pagination Prev 1 ... 182 183 184 185 186 187 188 189 190 191 ... 213 Next
/ 213

Contact Cubrid

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