Background Image
조회 수 28483 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

테스트 버전: CUBRID 2008 R3.0 (8.3.0.0337)

 

요약
CUBRID에서는 Primary key를 생성하면 asc 순으로 생성됩니다. 따라서 desc로 order by를 하게 되면 index를 타지 못하게 되죠. Primary key 생성 시 desc로 별도로 생성하지는 못하고요, primary key를 desc 순으로 생성하려면, unique index를 desc로 생성하여야 합니다.

이렇게 하면 order by desc 시 추가된 unique index 를 사용할 수 있게 됩니다.

 

테스트

먼저 테이블을 생성하고 데이터를 넣습니다.

 

csql> create table member_tbl(id int primary key, name varchar(10));
csql> insert into member_tbl values (1, 'marry'), (2, 'john'), (3,'billy'), (4, 'willy');
csql> ;x
csql> ;plan simple
csql> select * from member_tbl order by id for orderby_num() between 1 and 2;
Query plan:
 Index scan(member_tbl member_tbl, pk_member_tbl_id, member_tbl.id range (-2147483648 ge_inf max))
           id  name
===================================
            1  'marry'
            2  'john'

 

여기서 desc로 조회한다면 (최신 회원가입 순으로 조회가 대부분) 다음과 같이 되는데, 인덱스를 타지 않고 순차 검색(sequential scan)을 하는 것을 확인할 수 있습니다.

 

csql> select * from member_tbl order by id desc for orderby_num() between 1 and 2;
Query plan:
 Sort(order by)
    Sequential scan(member_tbl member_tbl)
           id  name
===================================
            4  'willy'
            3  'billy'

 


이제 원하는 것은, desc로 unique key를 생성하여 desc 로 조회할 때도 인덱스를 타게 하는 것입니다.
primary key를 desc로 바로 생성하지는 않으므로, unique 인덱스를 추가로 생성합니다.

 

 

csql> create unique index idx_u_member_tbl_id on member_tbl(id desc);

 

이제 desc로 질의 수행 시 idx_u_member_tbl_id 인덱스를 타는 것을 확인할 수 있습니다.

 

csql> select * from member_tbl order by id desc for orderby_num() between 1 and 2;
Query plan:
 Index scan(member_tbl member_tbl, idx_u_member_tbl_id, member_tbl.id range (-2147483648 ge_inf max))
           id  name
===================================
            4  'willy'
            3  'billy'

TAG •

  1. 데이터베이스 생성하기

    Date2011.03.07 Category기타 By남재우 Views29106
    Read More
  2. 복제 따라하기

    Date2008.11.21 CategoryLinux Byadmin Views29096
    Read More
  3. QuantumDB Eclipse Plugin을 사용하여 CUBRID연동하기

    Date2009.10.06 CategoryJava Bycubebridge Views28922
    Read More
  4. [질의튜닝]order by desc가 인덱스 타게 하려면

    Date2011.07.14 Category튜닝 Byadmin Views28483
    Read More
  5. CUBRID DB와 Broker 분리방안

    Date2010.04.28 CategoryLinux By정만영 Views28412
    Read More
  6. 스칼라 서브쿼리 사용 가이드

    Date2009.12.31 Category기타 By웁쓰 Views28275
    Read More
  7. 조인 방법(Join Method) 설명

    Date2009.12.31 Category기타 By웁쓰 Views27995
    Read More
  8. CUBRID2008R2.0 Windows BACKUP 자동화 설정하기

    Date2009.08.17 CategoryWindows By정만영 Views27942
    Read More
  9. CUBRID R2.0 ISV(Independent Software Vendor)설치방법

    Date2009.11.20 CategoryInstall Bycubebridge Views27922
    Read More
  10. CUBRID Tutorial (Unix/Linux)

    Date2009.08.17 CategoryLinux By정만영 Views27887
    Read More
  11. JavaSP SampleCode(Pivot기능)

    Date2009.07.28 CategoryJava Bycubebridge Views27554
    Read More
  12. 윈도우즈 환경에서 배치화일을 이용하여 백업 또는 데이터베이스 정리 수행하기

    Date2010.03.03 CategoryWindows By남재우 Views27487
    Read More
  13. CUBRID JDBC에서 유니코드 사용하기

    Date2009.08.15 CategoryJava By손승일 Views27435
    Read More
  14. CUBRID2008 R2.1 업그레이드시 serial 관련 문제 해결 방법

    Date2010.01.28 CategoryInstall By남재우 Views27348
    Read More
  15. CUBRID2008 R2.0 Tutorial (Windows)

    Date2009.08.17 CategoryWindows Bycubebridge Views27340
    Read More
  16. eclipse에서 python 및 CUBRID broker_log_top 사용하기

    Date2009.07.28 CategoryWindows Bycubebridge Views27272
    Read More
  17. CUBRID2008R1.x to 2.0 마이그레이션 가이드 (32bit 기준)

    Date2009.08.17 CategoryLinux By정만영 Views27205
    Read More
  18. VB에서 CUBRID ODBC/OLEDB 사용하는 방법 및 샘플코드.

    Date2012.06.30 CategoryODBC/OLEDB Byseongjoon Views26927
    Read More
  19. 리소스를 제한(limits.conf) 하여 DB서버를 관리하자

    Date2015.12.31 CategoryLinux By주현 Views26640
    Read More
  20. csql(SQL 실행기) 사용법

    Date2008.11.21 Category기타 Byadmin Views26557
    Read More
Board Pagination Prev 1 2 3 4 5 6 7 8 9 Next
/ 9

Contact Cubrid

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