안녕하세요.
데이터베이스는 오라클 11g 입니다.
현재 테이블에 시간 순(1초 간격) 데이터가 계속해서 저장(INSERT)되고 있는 다음과 같은 테이블이 있습니다.
테이블은 간략하게
create table tab_seq
(
ins_dtime date default sysdate not null,
tab_idx NUMBER
tab_col1 number(10)
);
입니다.
여기서 select 속도를 높이기 위해서
tab_idx 는 자동증가 컬럼으로 사용하고
ins_dtime , tab_idx를 unique index로 생성하여 사용하려고 합니다.
이 부분에 대해서 맞게 사용하는 건지 궁금합니다.
2번째 질문은.
tab_idx 컬럼을 자동증가 컬럼으로 INSERT시 sequence의 NEXTVAL을 사용하지 않고 자동으로 입력되게 할수는 없나요.?
테이블에 INSERT를 해주는 프로그램이 NEXTVAL 과같은 쿼리 튜닝을 할수 없어서 ins_Dtime 처럼 생성시 default 조건으로 생성되어야 할 꺼 같은데
할 수 있는지 궁금합니다.
1. UK 설정
- tab_idx 는 자동증가 컬럼으로 만들었다면?
- tab_idx 만으로도 유니크한데 굳이 두개를 엮어서 유니크인덱스를 만들 필요는 없어 보입니다.
2. 자동증가컬럼 사용
- 오라클에는 자동증가컬럼이 없습니다.
- 시퀀스를 이용해야 합니다.
3. 자동증가컬럼 필요?
- 이 테이블에 시퀀스 컬럼이 굳이 필요한가? 생각해볼 문제입니다.
- date 로 중복 가능성이 있다면? timestamp 를 이용해도 됩니다.
4. 또한 PK 가 필요한가도 생각해 볼 문제입니다.
- 단순 로그성 테이블이라면?
- PK 없이 그냥 인덱스만 만들어도 될 듯 하네요.