나는 최근 BrentOzar Unltd http://www.brentozar.com/blitzindex/ 에서 사람들로부터 환상적인 무료 스크립트를 발견했습니다
.
이것은 어떤 인덱스가 존재하는지, 얼마나 자주 사용되는지, 그리고 쿼리 엔진이 존재하지 않는 인덱스를 얼마나 자주 찾는 지에 대한 좋은 분석을 수행합니다.
일반적으로 지침이 좋습니다. 때때로 그것은 약간의 아이디어를 제안합니다. 나는 일반적으로 지금까지 다음을 수행했습니다.
- 읽지 않은 (또는 한 달에 50 회 미만) 인덱스를 제거했습니다.
- 외래 키와 필드에 가장 명백한 색인을 추가했습니다.
권장 인덱스를 모두 추가하지 않았으며 쿼리 엔진이 다른 새 인덱스 중 일부를 대신 사용하므로 더 이상 권장되지 않는 것을 발견하기 위해 일주일 후로 돌아 왔습니다!
일반적으로 다음에 대한 색인을 피해야합니다.
- 매우 작은 테이블 (50-200 개 미만의 레코드) : 종종 쿼리 엔진이 인덱스로드, 읽기, 처리 등이 아닌 테이블을 스캔하면 속도가 빠릅니다.
- 첫 번째 언급 된 열에서 카디널리티가 낮은 열 ( http://en.wikipedia.org/wiki/Cardinality_(SQL_statements) )에 대한 인덱스는 피하십시오 . 예 : 성별 필드 (M / F)를 인덱싱하는 것은 거의 쓸모가 없으며, 테이블을 스캔하고 해당하는 ~ 50 %를 찾는 것이 실용적입니다. 색인에보다 구체적인 내용 (예 : [생년월일, 성별])이 더 나은 경우, 주어진 기간 동안 모든 남성이 태어날 수 있습니다.
클러스터형 인덱스는 양호합니다. 일반적으로 기본 키를 기반으로합니다. 데이터베이스 엔진이 디스크의 데이터를 올바른 순서로 저장하도록 도와줍니다. 좋은 클러스터형 인덱스로 인해 테이블이 차지하는 공간이 줄어들 기 때문에 가장 큰 테이블의 경우이를 이해하는 것이 매우 중요합니다.
사전에 구조화되지 않은 힙이기 때문에 일부 테이블을 900MB에서 400MB로 줄였습니다.
http://msdn.microsoft.com/en-us/library/aa933131(v=sql.80).aspx
재구성 / 재 구축
조각난 인덱스를 확인해야합니다. 약간의 조각화는 괜찮습니다. 강박하지 마십시오! http://technet.microsoft.com/en-us/library/ms189858.aspx 재구성과 재구성의 차이점을 알고 있습니다!
정기적으로 검토
쿼리 변경, 데이터 볼륨 변경, 새로운 기능 추가, 기존 기능 제거. 한 달에 한 번 (또는 볼륨이 많은 경우 더 자주)보고 데이터베이스를 도울 수있는 곳을 찾아야합니다!
얼마나
최근 비디오에서 브렌트는 글을 많이 쓰는 테이블 (예 : 주문 테이블)에서 5 개 이상의 색인을 권장하지 않으며, 글을 많이 읽은 경우 (예 : 분석을위한 로깅 테이블) http : / /www.youtube.com/watch?v=gOsflkQkHjg
사무용 겉옷
그것은 달려있다!
마일리지는 데이터베이스에 따라 다릅니다. (현재 / 미래) 더 큰 테이블에서 명백한 (직원 성, 주문 날짜 등)을 가리십시오. 필요에 따라 모니터링, 검토 및 조정하십시오. 데이터베이스를 관리 할 때 일상 점검표의 일부 여야합니다. :)
도움이 되었기를 바랍니다!