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 3552 게시물 읽기
No. 3552
Re: 인덱싱에 대한 참고
작성자
김상기
작성일
2001-10-19 18:06
조회수
2,253

지난번에 글을 쓰려고 하다가 바빠서 못 썼었는데,

오늘은 시간이 나서 몇자 적습니다.

 

DB 속도의 관건은 중요한 순서대로 따지면,

 

1. query의 최적화,

2. 서버 튜닝의 최적화,

3. 시스템(하드웨어&OS)의 최적화입니다.

 

여기서는 query의 최적화 문제만 언급하겠습니다.

 

먼저,

인덱싱에서 btree든 hash 든 그 인덱스 되는 것은

앞에서 부터 그 문자 전체까지만 입니다.

즉, 중간자 검색에서는 인덱싱 사용이 불가능합니다. btree, hash 특성상.

 

즉, select * from t where name like '%상기%'

이런식의 쿼리를 사용한다면, name 필드에 대한 인덱스를 만들어

두었다 하더라도 사용할 수 없게 됩니다.

 

이런식의 결과물을 원하는데, 인덱싱이 필요하다면, "Full Indexing" 기법을 이용해야합니다. (이것에 대한 짧은 글은 이곳 게시판에 제가 적어두었습니다)

---------

다음, join에서의 인덱싱은 주의를 기우려서 처리해야합니다.

저희 회사 쇼핑물 DB의 쿼리를 예로 들어서 설명하면,

 

shop=> explain select a.goodid from good a, categood b where a.goodid = '1234' and a.goodid = b.goodid;

 

Nested Loop (cost=0.00..4.45 rows=2 width=8)

-> Index Scan using good_goodid_i on good a (cost=0.00..2.42 rows=1 width=4)

-> Index Scan using categood_good_i on categood b (cost=0.00..2.02 rows=1 width=4)

------------------

shop=> explain select a.goodid from good a, categood b where a.goodid = b.goodid and b.goodid = a.goodid;

 

Hash Join (cost=694.99..1197.39 rows=2 width=8)

-> Seq Scan on categood b (cost=0.00..120.49 rows=7349 width=4)

-> Hash (cost=683.39..683.39 rows=4639 width=4)

-> Seq Scan on good a (cost=0.00..683.39 rows=4639 width=4)

-------------------

 

이 쿼리의 결과는 동일합니다. 하지만,

내부적으로 처리하는 과정은 위의 내용처럼 판이하게 틀립니다.

 

이런 부분에서의 주의가 바로 query의 속도 문제와 직결됩니다.

[Top]
No.
제목
작성자
작성일
조회
3550문자열 비교 검색시 %의 처리법
초보2
2001-10-19
2033
3554┕>Re: 문자열 비교 검색시 %의 처리법
정재익
2001-10-20 13:53:37
2766
3549max connection 개수.
강윤환
2001-10-19
2039
3551┕>Re: max connection 개수.
정재익
2001-10-19 16:01:09
2442
3545pg_dump 에러..헉...
사이버
2001-10-19
2056
3546┕>Re: pg_dump 에러..헉...
정재익
2001-10-19 08:34:18
2405
3564 ┕>Re: Re: pg_dump 에러..헉...
사이버
2001-10-22 13:14:04
2194
3572  ┕>Re: Re: Re: pg_dump 에러..헉...
정재익
2001-10-22 22:21:40
2038
3542속도 문제
궁금이
2001-10-18
1871
3543┕>Re: 속도 문제
정재익
2001-10-18 19:22:03
2050
3552┕>Re: 인덱싱에 대한 참고
김상기
2001-10-19 18:06:49
2253
3539pg는 인덱스에 대해 검색시 기본으로 btree구조를 이용하는지요..
리나
2001-10-18
2011
3541┕>Re: pg는 인덱스에 대해 검색시 기본으로 btree구조를 이용하는지요..
정재익
2001-10-18 16:56:39
2249
3548 ┕>Re: Re: 재익님~답변감사합니다.(냉무)
리나
2001-10-19 11:50:02
2148
3532postgresql에서 xml사용방법에 대해서
박완규
2001-10-18
1865
3533┕>Re: postgresql에서 xml사용방법에 대해서
정재익
2001-10-18 09:51:04
2058
3566┕>Re: postgresql에서 xml사용방법에 대해서
김상기
2001-10-22 14:16:36
2242
3531PostgreSQL7.0.2
사이버
2001-10-18
1642
3534┕>Re: PostgreSQL7.0.2
정재익
2001-10-18 09:55:16
1820
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.026초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다