database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
ㆍCUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
CUBRID Q&A 342 게시물 읽기
No. 342
Q.레코드 쌍을 키로 쓰고 싶은 경우?
작성자
gilbird
작성일
2007-06-29 20:58
조회수
3,672

안녕하세요.

 

다음 테이블을 예로 들겠습니다.

 

CREATE TABLE test_table (

  a INT NOT NULL,

  b INT NOT NULL

  c INT

);

 

a와 b는 각각은 중복이 가능하지만 a,b 쌍으로는 중복이 되지 않도록 키로 쓰고 싶습니다.

다음 쿼리로 해결이 될까요?

 

CREATE UNIQUE INDEX unique_idx ON test_table (a, b);

 

만약에 위와 같은 인덱스를 만든다면

a, b 각각에 대한 검색이 많은데 각각 인덱스를 만들지 않아도 괜찮은지요?

이 글에 대한 댓글이 총 2건 있습니다.

인덱스는 맞습니다.

그렇지만 이 경우 인덱스는 a,b가 함께 쓰인 경우나 a에 대해서만 적용되고

b만 사용된 경우에는 적용되지 않습니다.

 

말씀하신 테이블을 생성하여 데이터를 일정 분량 입력한 다음

질의를 수행하고 에 대해서는 쿼리 플랜보기를 누르시면 해당 질의가

인덱스를 타는지를 확인하실 수 있습니다.

아래의 내용을 참고해 보시면 b의 경우에는 sscan으로 순차 스캔을 하게됨을

확인하실 수 있습니다.

 

select * from test_table where b=2 and a=2

=========================================

Query plan:

 

iscan

    class: test_table node[0]

    index: unique_idx term[0] AND term[1]

    cost:  fixed 0(0.0/0.0) var 1(0.0/1.0) card 0

 

select * from test_table where a=2

=========================================

Query plan:

 

iscan

    class: test_table node[0]

    index: unique_idx term[0]

    cost:  fixed 0(0.0/0.0) var 1(0.0/1.0) card 0

 

select * from test_table where b=2

=========================================

Query plan:

 

sscan

    class: test_table node[0]

    sargs: term[0]

    cost:  fixed 0(0.0/0.0) var 1(0.0/1.0) card 0

 

>안녕하세요.

>

>다음 테이블을 예로 들겠습니다.

>

>CREATE TABLE test_table (

>  a INT NOT NULL,

>  b INT NOT NULL

>  c INT

>);

>

>a와 b는 각각은 중복이 가능하지만 a,b 쌍으로는 중복이 되지 않도록 키로 쓰고 싶습니다.

>다음 쿼리로 해결이 될까요?

>

>CREATE UNIQUE INDEX unique_idx ON test_table (a, b);

>

>만약에 위와 같은 인덱스를 만든다면

>a, b 각각에 대한 검색이 많은데 각각 인덱스를 만들지 않아도 괜찮은지요?

 

서상욱님이 2007-06-29 23:08에 작성한 댓글입니다. Edit

select * from test_table where b = 2 라고 하면 인덱스를 타지 않지만


select * from test_table where b = 2 and a > 0 라고 하면 인덱스를 타게 됩니다.


문자일 경우 a > '' 라는 조건을 붙이면 되구요.

조정래(jungrae4)님이 2008-07-29 14:25에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
346Q.[질문] cci_connect의 리턴값에 대한 사용 [1]
이지현
2007-07-03
3500
344Q.7월 CUBRID 7.0교육 관련하여 질문드립니다. [1]
맹성호
2007-07-03
3557
343Q.64비트 윈도우 비스타 설치지원은 언제쯤? [1]
이도형
2007-07-01
3747
342Q.레코드 쌍을 키로 쓰고 싶은 경우? [2]
gilbird
2007-06-29
3672
341Q.FreeBSD용 CUBRID는 언제 나오나요? [1]
박상배
2007-06-29
3593
340Q.소스화일 실행중 에러가.. [1]
꺄르르
2007-06-28
3799
339Q.안녕하세요. C-API에 대한 도움말을 구할 수 없을련지요.. [1]
오순근
2007-06-28
3514
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.054초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다