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 9775 게시물 읽기
No. 9775
pg_catalog."C" 에 대한 질문 드립니다
작성자
황성근
작성일
2017-03-21 13:13
조회수
7,785

현재 디비 상태는 아래와 같고 Postgresql 버전은 9.6.2 우분투 입니다

SHOW LC_COLLATE

"ko_KR.UTF-8"

 

SHOW LC_CTYPE

"ko_KR.UTF-8"

 

show server_encoding

"UTF8"

 

한글 like 검색시 인덱스를 타려면  

cust_id varchar(20) COLLATE pg_catalog."C" NOT NULL

처럼  콜레이션을 C 로 해야 한다고 알고 있는데요  질문 몇개 드려봅니다

 

1. 한글이 아닌 필드에서 like 인덱스 검색을 하려면  pg_catalog."default" 로 해도 상관이 없나요?

2. 한글필드에서 like 검색을 하려면 아래처럼 인덱스도 C콜레이션으로 만들어야 하나요?

    CREATE INDEX idx_aaa ON public.tb_aaa USING btree (cust_id COLLATE pg_catalog."C")

3. 애초에 맘편하게 모든 기본값을 C콜레이션으로 해 놓고 쓰는것과  ko_KR.UTF-8 콜레이션을 쓰는것이 어떤 차이가 있는지 궁금합니다

 

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

1. pg_catalog.default는 initdb 할 때 결정된 template1 데이터베이스의 collate 값을 쓰겠다는 의미입니다.

즉, 일본어인데, 그값이 ko_KR.utf8로 되어있다면, 당연히 like 연산에 문제가 있겠죠.

 

2. 해당 데이터베이스의 collate  값이 C 로 되어있다면, 굳이 collate pg_catalog."C" 옵션을 지정할 필요는 없겠지만, 그 외의 경우라면, 지정해야겠죠.

만일 데이터베이스가 ko_KR.utf8 값으로 만들어졌고, 해당 칼럼의 인덱스도 만들 때 collate 값을 지정하지 않았다면,

like 연산에서 인덱스를 사용할 수 없습니다.

 

3. 이런 저런 이유 때문에, 결론은 데이터베이스를 만들 때, 아니, initdb 명령으로 클러스터를 만들 때, lc_collate 값으로 "C"를 지정하는 것이 맘 편합니다.

(10년 넘게 똑 같은 말을 하네요.)

김상기(ioseph)님이 2017-03-25 23:18에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
9778Oracle의 synonym 과 같은 역할을 하는게 있나요?? [1]
전산천재
2017-03-28
9171
9777SQL 기초 질문... [5]
jusuni
2017-03-24
7009
9776row_number 사용시 성능 개선 방법 [4]
비투즈
2017-03-23
8150
9775pg_catalog."C" 에 대한 질문 드립니다 [1]
황성근
2017-03-21
7785
9774client의 ip address 를 가져올수 있는 방법이 있나요? [1]
김경태
2017-03-05
7450
9773configure: error: library 'xml2' (version >= 2.6.23) is required for XML support [3]
전상도
2017-03-05
7555
9772postgresql 9.6 번역 참여 방법? [1]
전상도
2017-03-01
7222
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.050초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다