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 8967 게시물 읽기
No. 8967
9.0부터 생긴 테이블, 칼럼 단위 collate 사용자 정의 장점
작성자
김상기(ioseph)
작성일
2012-02-29 11:17
조회수
11,053

 지난 번 릴리즈 소식 전하면서, 

9.0 버전부터 데이터베이스 단위를 벗어나, 테이블의 칼럼 단위까지 collate 값을 지정할 수 있게 되었습니다. 

이 소식을 전하면서, 과연 이게 단일 한국어 환경에서 얼마나 쓸모 있을지 모르겠습니다

라고 했는데, 

이게 인덱스를 만들 때, 아주 유용하게 쓰이네요. 

예전 같았으면, collate 값을 C로 지정하지 않아서, 

한글 자료에서 like 검색에서 인덱스를 쓸 수 없었던 경우, 

데이터베이스 덤프하고, 데이터베이스 다시 만들고, 이런 작업을 했는데, 

이제는 다른 것 하나도 바꾸지 않고, 그냥 인덱스를 만들 때, 

그냥 '이 칼럼의 자료 정렬은 C 로케일을 따른다' 라고만 정의하면 원하는 결과를 얻을 수 있네요. 

 

다음은 테스트한 쿼리입니다. 

CREATE INDEX zipcode_dong_i
  ON zipcode
  USING btree
  (dong COLLATE pg_catalog."C" );

 

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

상기님 고생하시네요 - * 

유용한 정보 도움 받아갑니다.

김현진(tokssonda)님이 2012-03-08 17:39에 작성한 댓글입니다.

 여기서 

중요한 이야기를 빼먹었네요. 

 

= 연산자인 경우, 오른쪽 값의 collate 자동 변환을 하지 않네요. 

그래서 index 사용이 안됩니다. 

 

select * from zipcode where dong = '개포1동';

 

이 경우 의도되지 않게 인덱스 사용이 안됩니다. 

 

select * from zipcode where dong = '개포1동' collate "C";

 

이렇게 해야지만 인덱스를 탑니다. 

개선되어야할 부분 같습니다.

 

김상기(ioseph)님이 2012-04-05 15:50에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
89729.0이상 위도우용 바이너리는 어떻게 설치하지요? [2]
심상호
2012-04-01
10041
89707K 길이의 텍스트 입력하는 방법? [2]
김동수
2012-03-11
8765
8968trigger 질문 [1]
서귀동
2012-02-29
8352
89679.0부터 생긴 테이블, 칼럼 단위 collate 사용자 정의 장점 [2]
김상기
2012-02-29
11053
8965libpqxx는 PostgreSQL DB가 설치된곳에서만 쓸 수 있나요? [5]
송미란
2012-02-28
9655
8964암호화 관련 질문드립니다. [1]
김종수
2012-02-28
8315
8963명령어 제한하는 방법을 알고 싶어요 ^ ^ [4]
김현진
2012-02-23
8380
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.050초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다