Background Image
조회 수 28472 추천 수 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. CUBRID 2008 R4.0 GA 버전의 주요 기능만 요약한 PPT 문서

  2. CUBRID 2008 R4.0 파라미터 변경 사항 (일부)

  3. CUBRID 볼륨 공간 재사용률 비교 - 2008 R3.1 vs. 2008 R4.0

  4. SNS 유형 서비스에서 CUBRID와 MySQL 조회 성능 비교

  5. CUBRID 2008 R4.0의 커버링 인덱스(covering index)는 무엇인가?

  6. [질의튜닝]order by desc가 인덱스 타게 하려면

  7. CUBRID 세미나 자료(개요 및 SQL 활용)

  8. apache, php rpm package 생성 시 필요한 rpm 스펙

  9. CUBRID Windows버전 삭제 및 재설치 실패시 강제 삭제하는 방법입니다.

  10. MySQL,PHP 기반에서 CUBRID,PHP 기반으로 포팅하기(CUBRID 2008 R3.1)

  11. phpize 를 이용한 PHP 모듈 설치 - LINUX

  12. apache, PHP 설치하기 - LINUX

  13. CUBRID에서의 BLOB/CLOB 타입 사용법

  14. CUBRID 설치 안내 - LINUX

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

  16. CUBRID 활용 - 질의 튜닝 사례 중심

  17. CUBRID Migration Toolkit 튜토리얼

  18. CUBRID 2008 R3.0 추가기능

  19. 트랜잭션과 LOCK 초급과정

  20. IIS에서 PHP, CUBRID 사용하기

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