Print
카테고리: [ Miscellaneous ]
조회수: 1801

1. 배경

데이터를 넣을 때마다 일련번호가 증가하는 컬럼을 만들고 싶음.


2. 방법

시퀀스를 만들고 컬럼이 해당 시퀀스를 바라보게 하는 방법도 있지만, SERIAL을 사용하면 쉽게 해결된다. 예를 다음과 같음.

CREATE TABLE data_log
(
  seq         serial primary key,
  currenttime timestamp default current_timestamp,
  service     varchar(50),
  data_name   varchar(200),
  value       varchar(100)
);

3. 인덱스 생성

현재 인덱스를 확인함.

# SELECT * FROM pg_indexes WHERE tablename = 'api_log';
 schemaname | tablename |  indexname   | tablespace |                               indexdef

------------+-----------+--------------+------------+----------------------------------------------------------------------
 public     | api_log   | api_log_pkey |            | CREATE UNIQUE INDEX api_log_pkey ON public.api_log USING btree (seq)
(1 row)

seq에 걸려있음을 확인할 수 있다.

이제 service, data_name 컬럼을 사용하는 멀티인덱스를 만들어보려 한다.

# CREATE INDEX index_name ON api_log (service, data_name);

인덱스 생성이 완료되면 CREATE INDEX라고 뜬다.

# CREATE INDEX index_name ON api_log (service, data_name);
CREATE INDEX

이제 다시 인덱스 리스트를 확인해봄.

# SELECT * FROM pg_indexes WHERE tablename = 'api_log';
 schemaname | tablename |  indexname   | tablespace |                               indexdef

------------+-----------+--------------+------------+----------------------------------------------------------------------------
 public     | api_log   | api_log_pkey |            | CREATE UNIQUE INDEX api_log_pkey ON public.api_log USING btree (seq)
 public     | api_log   | index_name   |            | CREATE INDEX index_name ON public.api_log USING btree (service, data_name)
(2 rows)