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)