재가 궁굼한것은 제목과 같이 가장 먼저 생성된 Row부터 예를 들어 10만건의 Data를 delete하는 경우 어떻게 해야하는지요? 간단한 sql문 부탁드립니다. 또 한번에 delete할 수 있는 Row건은 MAX얼만가요? 제가 사용하고 있는 Version은 PostgreSQL8.2.5입니다. 답변 미리 감사드립니다.
순차적으로 증가하는 unique key가 있으면 가능할 듯 합니다.
예를 들어 순차적으로 증가하는 id라는 컬럼이 있다면
delete from table_a where id < (select id from table_a order by id asc limit 1 offset 100000);
그리고 Oracle 처럼 rollback segment 같은 공간이 별도로 없기 때문에 한번에 삭제할 수 있는 row 수는 특별히 제한 없는 것으로 알고 있습니다. 삭제할 row 수가 많을수록 속도만 떨어질 뿐인거죠.
저에 경우는 이러한 경우도 대비할겸 무조건 테이블을 만들면
id serial,
timestamp timestamp default now()
이 두개의 컬럼은 만들어놓습니다. id가 integer가 아닐지라도 무조건 id를 serial로 만들어 놓고 primary key처럼 쓸 것은 doc_id varchar(20) unique 처럼 unique로 지정해놓습니다.
미리 이런식으로 만들어놓으면 이런 문제는 아주 편하지요.. 하지만 없을 경우는 골치하프고.. ^^;
하여간 지금 당장 필요없을지 몰라도 만들어놓으면 언젠가는 꼭 쓸일이 있습니다. 반드시...