2012년 11월 1일 목요일

PostgreSQL 9 의 Primary Key에 Cluster 특성 지정하기

SQL Server 를 많이 써서 그런지, 당연히 Primary Key로 지정된 놈이 기본적으로 Clustered Index 로 설정되는 줄 알았는데 PostgreSQL은 아니네요^^

그냥 Non-Clustered Index 형태이면서 제약 조건에 나타나내요

다음과 같이 특정 테이블의 Primary 키에 CLUSTER 속성을 주면 간단히 해결이 됩니다.

ALTER TABLE customers CLUSTER ON customers_pkey; 

오늘 하루 종일 PostgreSQL 기본 문법 사항과 성능 관련 사항을 훑어보고 있는데, 상당히 잘 만들어졌다고 봐 집니다. 
다양한 기능을 가지고, 상황에 맞는 기능을 제대로 제공하는군요...

인덱스만 하더라도 BTREE, HASH, GIN (Generalized Inverted Index), GiST (Generalized Search Tree) 를 제공하는군요.

특이한 것은 부분 인덱스라고, 특정 조건에 해당하는 레코드들만 인덱스를 정의하는 기능도 있네요.

CREATE INDEX idx_accounts_interesting ON accounts WHERE interesting is true;

또한  SQL Server 의 경우 WHERE 절에 Upper(), 나 Lower() 등의 함수를 쓰게 되면, 인덱스를 타지 않는데, 이런 상황을 극복할 수 있도록, 이런 함수를 이용한 인덱스도 있습니다.

CREATE INDEX idx_lower_name ON users (lower(name));
SELECT * FROM users WHERE lower(name) = 'x';


좀 더 공부해서, 아예 PostgreSQL 의 Replication과 HA 구성도 함 해봐야 겠습니다.


댓글 없음: