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
운영게시판
최근게시물
PostgreSQL Q&A 3408 게시물 읽기
No. 3408
Re: index에 관한 많은 질문들...
작성자
정재익(advance)
작성일
2001-09-19 14:11
조회수
2,617

다음 글을 보면서 답변 드리겠습니다.

 

-- 허재호 님이 쓰신 글:

>> 휴. 생각할 수록 index에 관해 모르는 것이 늘어만 가는군요.

>>

>> 좀 질문이 많지만 부탁드리겠습니다.

>>

>> 1. 다음과 같이 테이블을 만들었습니다.

>> create table aa (a varchar(10), b varchar(10), c varchar(10));

>> 그리고 질의할때

>> select * from aa order by b;

>> select * from aa order by c;

>> select * from aa order by b, c;

>> 이런 질의들이 있습니다. 이때 인덱스는 어떻게 만드는 것이 가장 좋을까요?

>>

>> 1-1 b와 c에 각각 인덱스를 만든다. (이래도 복수 필드에 대한 인덱스 - order by b,c - 를 수행하나요?)

 

b,c 각각에 대해서 생성할 경우 1,2 번 query 는 index 를 타지만, 3번 query 는 타지 않습니다.

b,c 로 동시에 만들어 줄 경우 1,3 번 query 는 index 를 타지만, 2번 query 는 index 를 타지 않습니다.

 

>> 1-2 b,c에 대한 복수필드 인덱스를 하나 만든다. (이때 b와 c를 각각 인덱싱 - order by b 또는 order by c 같은 - 하나요? mysql에서는 b는 하고 c는 하지 않는 것으로 나와 있던데...)

>>

>> 1-3 각각 만들거나 복수필드 하나를 만들거나 모두 가능하다면 어떤 것이 성능에 유리한가요? 이런 필드가 한 대여섯개 정도 있어도 모두 하나의 복수 인덱스로 만들면 될까요? (예를 들면 b,c,d,e,f,g등에 걸쳐 여러 인덱스가 일어나면 하나의 복수필드 인덱스를 만들어서 모두 같이 사용한다?)

 

인덱스 생성은 query 종류에 맞추어서 optimization 시켜 줘야 합니다. 쓸데 없이 index 를 많이 만드는 것도 오히러 시스템 performance 를 저하시키는 요인이 되기도 합니다.

 

인덱스를 타는지 않는지 확인하시려면 index 생성후 explain SQL_QUERY; 형식으로 psql 에서 명령을 주시면 그 결과를 보여 주므로 확인해 가면서 작업하시기 바랍니다.

 

>> 2. 두번째 질문입니다.

>> 다음과 같이 테이블을 만들었습니다.

>> create table aa (a varchar(10), b varchar(10), c varchar(10));

>> a는 primary key이고 b에는 그냥 index를 만들었습니다.

>> create table aa1() inherits(aa);

>> create table aa2() inherits(aa);

>> create table aa3() inherits(aa);

>>

>> 이러면 일단 상속받은 테이블등(aa1,aa2,aa3)에는 index가 형성되지 않습니다.

>> 그런데 모든 테이블, 즉 aa 에 질의하는 것은 매우 적고(없지는 않지만) 대부분은 aa1,aa2,aa3에 각각 질의하는 것이 대부분입니다. 이런경우에

>>

>> 2-1 aa1,aa2,aa3에 각각 인덱스를 만들어야 하나요?

 

각각 인덱스를 만들어야 합니다. class 에서 상속되는 것은 그 CLASS 의 attribute 뿐입니다. 심지어는 constraint 까지도 상속되지 않는 것으로 알고 있습니다. (이 부분은 말하고 나니 7.1.2 에서 어떻게 바뀌었는지 확인해 보지 못했군요. 확인해 보도록 하겠습니다. 혹시 table constraint 까지 상속된다면 다시 reply 를 붙이도록 하겠습니다)

 

>> 2-2 각각 인덱스를 만들꺼면 parent table,즉 aa에는 인덱스를 만들 필요가 없지 않나요?

 

Parent table 에 자료를 넣지 않고 단지 template table 로만 사용할 의향이라면 당연히 답변은 yes 입니다.

 

>> 2-3 child table에 primary key index는 어떻게 만들죠? 그냥 unique index를 만들면 되나요? (그러니까 primay key index란 것이 not null에 unique index와 동일한 것인가요?)

 

child table 에서 primary key 를 지정하고자 하신다면 table constraint 형식을 취해서 주시면 됩니다.

 

create table t (a int primary key, b);

create table t1 (primary key (a)) inherits (t);

 

이해가 가실련지 모르겠군요. 잘 모르시겠다면 CREATE TABLE 부분의 메뉴얼을 다시 한번 읽어 보시고, 그래도 모르겠다면 다시 질문 주시면 답변올리겠습니다.

 

>> 일단 질문은 이렇습니다. 답변을 올려주시면 궁금한 점을 다시 올리겠습니다.

>>

>> 지금 현재 제 database에는 child와 parent 테이블에 모두, 필요한 field에 각각 인덱스가 만들어져 있습니다. 그래서 전체 인덱스의 숫자만 수백에 이르는 군요. 이래서야 성능은 잘 모르겠지만 인덱스의 전체용량만도 엄청...

>>

>> 물론 용량보다야 성능이 훨씬 중요하니까 성능만 좋다면야 그정도는 감수할 수 있는데 제가 인덱스를 제대로 사용하고 있는지에 대한 확신이 없습니다.

>>

>> 그럼 답변 기다리겠습니다. 감사합니다.

 

말씀 드린대로 무조건 인덱스를 만든다고 디비의 퍼포먼스가 올라가는 것이 아닙니다. 인덱스 부분을 잘 읽어 보시고 꼭 필요한 부분만 인덱스를 만드시기 바랍니다.

 

그리고 운용중 좋은 경험이라도 계시면 아무리 허접해도 이곳 tutorial 등을 통해서 올려 주시면 다른 분들께도 도움이 될 것 같군요. :-)

[Top]
No.
제목
작성자
작성일
조회
3399MySql 데이타 POstgreSql 커버턴 시험좀 부탁들 드립니다
조성준
2001-09-17
1783
3409┕>Re: MySql 데이타 POstgreSql 커버턴 시험좀 부탁들 드립니다
정재익
2001-09-19 14:13:52
1871
3424 ┕>Re: Re: MySql 데이타 POstgreSql 커버턴 시험좀 부탁들 드립니다
조성준
2001-09-21 02:47:47
1856
3398Ant 설치는 어떻게 하나요. [2]
이유경
2001-09-17
1748
3397[급질문]configure시에 호스트타입을 알수없다는 에러가 납니다
최우석
2001-09-17
1668
3407┕>Re: [급질문]configure시에 호스트타입을 알수없다는 에러가 납니다
정재익
2001-09-19 13:46:02
1752
3416 ┕>Re: Re: [급질문]configure시에 호스트타입을 알수없다는 에러가 납니다
초보
2001-09-20 12:09:39
1685
3418  ┕>Re: Re: Re: [급질문]configure시에 호스트타입을 알수없다는 에러가 납니다
정재익
2001-09-20 12:25:52
1850
3395index에 관한 많은 질문들...
허재호
2001-09-17
1983
3408┕>Re: index에 관한 많은 질문들...
정재익
2001-09-19 14:11:54
2617
3413 ┕>답변에 감사드립니다.
허재호
2001-09-19 18:28:38
2112
3385밑에 밑에 'DB conneciton'에 대한 추가 상황
노인철
2001-09-15
2020
3384Zeos Database Exploer 의 대해서 답변 부탁드립니다.
김대영
2001-09-15
2295
3386┕>Re: Zeos Database Exploer 의 대해서 답변 부탁드립니다.
유대열
2001-09-15 11:52:31
2434
3387 ┕>Re: Re: 정말 감사드립니다. 또 한가지 더...
김대영
2001-09-15 13:36:07
2360
3391  ┕>Re: Re: Re: 정말 감사드립니다. 또 한가지 더...
김대영
2001-09-17 11:56:47
2364
3383DB Connection
노인철
2001-09-15
2277
3392┕>Re: DB Connection
정재익
2001-09-17 11:59:00
2353
3396 ┕>Re: Re: DB Connection
노인철
2001-09-17 16:36:32
2358
3400  ┕>Re: Re: Re: DB Connection
정재익
2001-09-18 10:46:05
2795
3403   ┕>[내용없음] 정말 감사합니다.
노인철
2001-09-18 18:37:15
2075
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.020초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다