안녕하세요..
테이블에 데이터가 수십만건에서 수백만에 이르게 쌓여있습니다.
그래서 속도도 느려지고 그런 관계로.. 데이터를 시간이 경과한 것을
찾아서 삭제를 하고자 합니다.
그런데 삭제를 할 때 지난 과거 데이터를 찾아서 그 이후의 것만
일괄적으로 지우고 싶습니다.. 그리고 또한 어느 일정 기간의 날짜 데이터를
삭제 하고 싶을땐 어떻게 하면 되는지 알려주시면 고맙겠습니다..
그 테이블에 날짜 정보를 가지고 있는 컬럼이 없다면... 그리고 다른 테이블과 join해서라도 날짜를 유추할 수 있는 방법이 없다면... 특정 날짜 범위를 조건으로 삭제하는 것은 어려울 것 같네요.
날짜가 아닌 다른 조건으로.. 예를 들면 전체 자료량의 상위 몇 %를 지운다는 식으로 지우는 정책을 생각해 보시죠.
테이블에 timestamp timestamp default now() 처럼 생성시각을 나타내는 컬럼이 있었으면 쉬워질텐데 아쉽게도 없는 상황이네요...
지금이라도 timestamp 컬럼을 넣어놓고 작업하시는 것이 좋겠네요.
delete from table where timestamp between '2005-5-1' and '2005-6-1' and timestamp not null;
답변 감사합니다..
참고로 컬럼에는 날짜를 디폴트로 가지고 있는 timestamp가 있습니다. 여러분의 답변 정말 고맙습니다.
많은 도움이 되었습니다. ^^
헌데 문제는 자료의 삭제 자체야 간단하다고 해도
정말로 자료를 지워도 문제가 없을까요...^^;
자료가 너무 많아서 느려지는 것도 문제이긴 하지만
일단은 다른 테이블로 복사를 해 백업을 해둔 상태에서
삭제해본 다음 운영해보는 것은 어떠실런지요?
아님...스크립트 하나 만들어서 일정기간 지난 자료는
다른 테이블로 복사 후 제거하는 방안도 있을 수 있고요...^^;