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 5712 게시물 읽기
No. 5712
문자셋에 뭔가 이상이 있는거 같은데요..
작성자
장현성(siche)
작성일
2004-11-29 11:58ⓒ
2004-11-29 11:58ⓜ
조회수
3,217

음, 이런것도 있네요..

제가 설치를 잘 못한건지 bug 인지,

무심코 눈에 띄었군요

 

pgsql=# \l

List of databases

Name | Owner | Encoding

-----------+-------+----------

pgsql | pgsql | EUC_KR

template0 | pgsql | EUC_KR

template1 | pgsql | EUC_KR

(3 rows)

 

pgsql=#

 

 

pgsql=# EXPLAIN ANALYZE select * from bank_code where name like '한국%';

QUERY PLAN

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

Index Scan using idx_bank_code on bank_code (cost=0.00..387.22 rows=113 width=394) (actual time=0.078..0.310 rows=42 loops=1)

Index Cond: (((name)::text >= '한국'::character varying) AND ((name)::text < '한군'::character varying))

Filter: ((name)::text ~~ '한국%'::text)

Total runtime: 0.448 ms

(4 rows)

 

Time: 1.997 ms

pgsql=#

 

 

pgsql=# EXPLAIN ANALYZE select * from bank_code where name like '한구%';

QUERY PLAN

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

Index Scan using idx_bank_code on bank_code (cost=0.00..387.22 rows=113 width=394) (actual time=0.055..0.055 rows=0 loops=1)

Index Cond: (((name)::text >= '한구'::character varying) AND ((name)::text < '한국'::character varying))

Filter: ((name)::text ~~ '한구%'::text)

Total runtime: 0.155 ms

(4 rows)

 

Time: 1.735 ms

pgsql=#

 

 

pgsql=# EXPLAIN ANALYZE select * from zipcode where dong like '공항%';

QUERY PLAN

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

Index Scan using idx_dong on zipcode (cost=0.00..797.01 rows=239 width=207) (actual time=0.293..0.375 rows=15 loops=1)

Index Cond: (((dong)::text >= '공항'::character varying) AND ((dong)::text < '공해'::character varying))

Filter: ((dong)::text ~~ '공항%'::text)

Total runtime: 0.491 ms

(4 rows)

 

Time: 2.486 ms

pgsql=#

 

 

 

잘 보시면 아시겠지만,

인덱스 컨디션이 나오는 부분에 AND 뒤쪽으로

글자가 한칸씩 밀립니다.

문자셋에서 하나씩 밀리는것 같은데..

설치를 잘못한것 같진 않은데.. 버그일까요? -0-

 

참, 결과는 문제없이 나옵니다. 단지 저 보여주는 곳에서만 저러네요..

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

지극히 정상적인 반응인데요. :)

 

PostgreSQL의 like 연산에서 인덱스를 사용하는 내부적인 모습을 보여주는 것입니다.

 

그 다음 글자 앞까지 검색하는 꼴이지요. euc-kr에서는 '한구' 다음 글자는 '한국' 입니다. :)

 

재미난 사실은 '공항'의 다음 글자는 euc-kr에서는 '공해'가 되겠지만,

unicode에서는 '공핮'이 됩니다.

 

이래서, PostgreSQL에서 한글을 쓰는데, 가장 적당한 문자셋은 euc-kr이 아니라, unicode라고 제가 누차 말씀드리는 것입니다.

 

 

김상기(ioseph)님이 2004-11-29 12:31에 작성한 댓글입니다.

아~ 그렇군요~

처음 알았습니다 ^^;

 

장현성(siche)님이 2004-11-29 12:37에 작성한 댓글입니다.

흑... 전 아직도 뭐가 문제라는 것인지 이해하지 못하고 있습니다. -.-;;

'한구%' 라고 검색 했는데 '한국'이라고 나온 것을 말하는 건가요? 맞다면 오히려 pgsql이 똑똑하다고 칭찬해야 할 것 같은데...

박성철(gyumee)님이 2004-12-01 09:24에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
5717한글 문자셋 질문입니다. [1]
채희범
2004-12-04
2920
5715windows에서 postmaster실행하기 [2]
장병찬
2004-12-01
9142
5714진짜 아시는분 없나요.....파워빌더에서 catalog error [4]
초보자
2004-11-30
5750
5712문자셋에 뭔가 이상이 있는거 같은데요.. [3]
장현성
2004-11-29
3217
5711같은 정보의 행값이 여러개 있을때 어떻게 지우나요? 하나만 남기고 [2]
whoni
2004-11-29
3201
5708primary key로 검색해도 limit를 쓰면 빠르다? << 2번째 이야기.. [8]
장현성
2004-11-27
3727
5707통계 테이블을 만들었는데... [4]
장현성
2004-11-27
3489
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다