인덱스는 한번식 drop 했다가 다시 잡아 줘야 한다는 소리를 들은 적이 있는것 같아서 질문 하는건데요..
하루에 20만건 정도입력이 되고 테이블에서 인덱스 사이즈도 계속적으로 증가 하고 있습니다... 여기에서 만약에 20만건 정도 테이타를 삭제 하면 삭제된 데이타 대한 인덱스도 자동 삭제 되는건가요? 아니면 새로 잡아 주는것이 좋은 건가요???
새로 잡아 주어야 한다고.. 간단한 이유도 부탁드릴께요~~ ^^
Index를 Rebuild는 Index종류에 따라 틀립니다.
일반적으로 사용하는 Index로는
B Tree Index와 Clustered Index가 있는데
Rebuild Index는 B Tree Index가 해당이 됩니다.
B-Tree Index는 데이타사 Skew 현상이 발생을 하는데
이는 delete 및 index 컬럼에 대한 update가 자주 일어 날때
발생이 됩니다.
즉 이러한 조건이 아니면 굳이 rebuid작업을 다시 할 필요는 없습니다.
B-Tree에 대한 정확한 개념을 이해한후에 Rebuild 작업을
결정하시는게 좋습니다.
create nonclustered index f_idx_datetimeps on t_ndetails(날짜,시간,조건1) 같은시간에 같은 조건이 들어 올수도 있어서 nonclustered index를 잡았는데요.. 제대로 잡은건지 모르겠네요...ㅋ 아무튼..... 이런식으로 인덱스를 잡은 테이블이 있는데요...(update는 안일어남, 데이타는 순차적으로 시간경과에 따라 데이타가 insert 됨.) 두달치 데이타만 가지고 있기 위해 2달이 지난 데이타는 자동 삭제하게 해두었습니다... 이때.... 오랜 시간이 지난후에 rebuild index를 하는게 맞는건가요?? nonclustered index b-tree 방식이라고 하던데... 하나더~ 데이타가 삭제 되면 해당 하는 인덱스도 삭제되어 인덱스 사이즈가 줄어 드나요?? 답변 부탁드려요~~ 꾸벅~
nonclustered index나 clustered index나 rebuild하시면 조금 또는 엄청 성능 향상을 하실수 있습니다. 둘다 해주는 이유는 어차리 clustered index도 leaf page를 제외하고는 b tree로 되어 있습니다. 1. APL의 clustered index를 다시 만들면....data clustered ratio가 높아져서 그동안 split이 많이 발생했다면 성능이 좋아지겠죠... 2. DOL인 경우 index뿐만 아니라 table도 reorg rebuild해줌 좋지여 안되면 reorg compact라도...(이건 table lock을 걸지 않고. short during time만 lock을 발생시킵니다) 이상 주저리 주저리~~