DB를 운영하다 보면 시간이 지남에 따라 테이블들이 쌓여가고 나중에는 사용하지 않는 테이블들도 많이 생기기 마련이다. (관리를 제대로 안 했다는 증거…?! _-_)
암튼 그럴 경우 무턱대고 테이블을 정리할 순 없으니 일정한 기준을 가지고 정리하게 된다.
일정 기간 이내에 사용되지 않은 테이블 목록을 가져올 수 있다면 정리하는게 더 수월해 지지 않을까?
다음 쿼리를 사용하면 일정 기간 내에 사용되지 않은 테이블 리스트를 가져올 수 있다.
DB명을 자신의 DB명으로 변경하고 실행하면 30일 이내에 한번도 업데이트 되지 않은 테이블 리스트를 얻을 수 있다.
반대로 30일 이내에 업데이트 된 테이블 리스트를 얻으려면?
아래 쿼리문의 not in 을 in으로만 변경해 주면 된다.
select table_name, count(*) as cnt
from information_schema.columns
where TABLE_SCHEMA = ‘DB명’
and table_name not in (select table_name
from information_schema.tables
where table_schema = ‘DB명’
and engine is not null
and (update_time > (now() – interval 30 day)))
group by TABLE_NAME
order by cnt desc;