SQL 쿼리의 속도가 왜 생기는지?? 0 5 2,041

by 정종고 [Oracle Tuning] [2009.10.30 14:22:14]


안녕하세요!

어떤 Table은 select  * from table1 하면 0.2초 이내에 조회가 되는데.....

어떤 Table은 똑같은 쿼리문을 날려도 4.33초가 걸리는데..... 왜 그럴까요?!

그 Table만 그러네요!

조회하는 데이터가 없어도 그 정도 시간이 걸리는 이유가 뭘까요??

테이블 만들때 뭘 잘못해서 그런가요??

혹시 이런 경우 아시는 분 빠른 답변 부탁드립니다.

 

by 마농 [2009.10.30 14:27:06]
PC가 느려지면 디스크 조각모음 하면 좀 나아지죠.
그거랑 같은 원리라고 생각하시면 될 듯 합니다.
테이블이 조각나 있는거죠. 한번 재생성해주시면 나아질듯.

by 오상환 [2009.10.30 14:43:53]
테이블 전체를 스캔할 때는 데이터가 없는 비어있는 블록이라도 이전에 데이터가 들어간 적이 있는 블록이라면 무조건 읽게 됩니다. 그러므로 대량 삭제가 일어난 테이블이라면 그러한 현상이 일어나게 됩니다.

by 정종고 [2009.10.30 15:03:19]
10초 주기로 LOG를 써 주는 테이블은 주기적으로 재생성을 해 주어야 하나요??

by 현 [2009.10.30 15:08:08]
정종고님.
위에 답글 다신 분들의 내용은 그 말이 아니구요,
혹시 해당 테이블의 데이터를 왕창 지우신 적이 있는지요?
주기적으로 쓴 것은 상관없습니다.
혹시 delete문을 사용해서 데이터를 왕창 지운적이 있다면 그 비어 있는 블럭을 읽느라고 시간이 오래 걸린 것이구요,
그럴 경우에 재생성(REORG)을 해주란 이야기 입니다.

by 정종고 [2009.10.30 15:56:42]
네! 제가 10만건을 지운적이 있어요!
현님! 답변 감사합니다.

LOG 테이블이 마니 쌓여서 100만건 되면 어떻게 처리하는게 좋을까요??
차후에 재생성을 해 줘야 하나요??
아님 트리거를 만들어서 1만건 이상이 되면 자동으로 1000건씩 삭제를 하는 함수를
만들어 돌려야 하나요??
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입