database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
ㆍMS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MS-SQL Q&A 6596 게시물 읽기
No. 6596
index 생성시... 이거 업데이트도 따로 해 줘야 하나요?
작성자
동장군
작성일
2012-12-27 16:24
조회수
7,290

 

속도가 느려서 테이블에 한 컬럼에 index 를 생성하였습니다.

물론 만족할 만한 속도 향상이 있어서, 문제가 해결되었는줄 알았는데

한참 지난후에 검색을 하니 다시 느려져 있더군요. 신기한게 옛날 데이터를 검색하면 빠르고, 최신 데이터를 검색하면 느리다는...

그래서 생성한 인덱스를 삭제하고, 새로 생성했더니, 최신 데이터도 빨리 검색이 되더군요.

그래서 얻은 결론이 인덱스는 자동으로 업데이트가 안되고, 사용자가 주기적으로 업데이트 해야 하는 건가?

이런 생각이 들었습니다.

create index index_eventdate on T_LOG_ALARM(EVENT_DATE)
 

위 처럼 생성하였었는데, 제가 알고 있는게 맞나요?  이렇게 불편하게 사용할거 같지는 않는데

답변좀 부탁드립니다.

 

이 글에 대한 댓글이 총 1건 있습니다.

 우선 DB는 index는 항상 갱신이 된다고 보시면 됩니다. 그래서 index를 너무 많이 생성하면(극단적으로 생각해 본다면 한 테이블에 인덱스를 100개쯤?) data의 변경(insert 등)시에 부하가 많이 걸리는 것도 고민해야 할정도로 index는 스스로 정확히 갱신됩니다. 

 
신기한게 옛날 데이터를 검색하면 빠르고, 최신 데이터를 검색하면 느리다는...
그래서 생성한 인덱스를 삭제하고, 새로 생성했더니, 최신 데이터도 빨리 검색이 되더군요.
 
위의 말씀에서 생각되는 문제는 통계의 문제로 생각됩니다. 통계는 한 건 변경되었다고 갱신되지 않습니다. 따라서 적절한 시점을 잡아서 통계를 수동으로 갱신해주는 작업은 해주시는 것이 좋습니다. 이렇게 적절하게 통계를 잘 갱신해 주는 작업이 DBA가 해줘야 하는 작업입니다만 큰 조직이 아닌 경우 DBA를 별도로 두지 못한 경우 다른 분이라도 갱신 작업을 해주셔야 합니다.
 
뭐 index를 지우고 새로 생성하면 통계를 새로 만들어야만 하기 때문에 동일한 index지만 통계데이터가 갱신이 됨으로써 해결된 것이 아닐까 싶습니다만 느렸을때의 실행계획과 빨라졌을 때의 실행계획을 비교해보는 답을 얻기 위한 첫번째 걸음입니다. 현재 빠를 때의 실행계획을 한켠에 보관해 두셨다가 나중에 느려지시면 실행계획을 저장해서 서로간에 비교를 한 번 해보세요.
 
우욱님이 2012-12-27 23:15에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
6609exe실행시 ini 내용 읽어 컨트롤하고 싶어요...
우성대왕짱
2013-01-02
6878
6607합계를 구하고 싶어요... [4]
김우성
2012-12-31
7604
6597delete 문을 빠르게 하는 방법.. [1]
피크맨
2012-12-27
7853
6596index 생성시... 이거 업데이트도 따로 해 줘야 하나요? [1]
동장군
2012-12-27
7290
6595근사치 필드 까지만 select 할수 있는 쿼리좀...부탁합니다 [27]
김우성
2012-12-26
10944
6594DB 디자인 도움좀 부탁해요. 인사과. [2]
우세연
2012-12-19
7390
6592SQL server user license 질문.. [2]
코스
2012-12-17
7823
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다