2009-07-11 4 views
3

SQL Server 2005를 사용하고 있습니다. 웹 활동이 사용자 활동 및 방문한 URL을 추적하는 데 사용하는 간단한 로깅 테이블이 있습니다. 테이블 디자인은 매우 간단로깅 테이블에 대한 클러스터 된 인덱스 선택에 대한 조언이 필요합니다.

ID (ID 값)

활동 (NVARCHAR (200))

LogDate (날짜),

URL (NVARCHAR (1000))

우리는 주로이 테이블에 삽입을합니다. 한동안 특정 사용자의 활동을 조사하려는 경우이 테이블에 대해 일부 쿼리를 수행합니다. 테이블에 현재 기본 키로 식별 열이 있습니다. 이것은 클러스터 된 인덱스이기도합니다.

LogDate 열로 클러스터 된 인덱스를 변경하는 것이 더 나은지 궁금합니다. LogDate 열에는 활동의 날짜/시간이 저장되며 중복 될 수 있지만 테이블에 항상 삽입되므로 항상 새 레코드가 테이블의 끝에 있어야하므로 SQL Server에 있어야합니다. 삽입 성능에 영향을주는 페이지 분할을 재조직하거나 수행하십시오. LogDate 열을 클러스터 된 인덱스로 사용하면 검색 성능을 향상시키는 데 도움이됩니다.

제 생각이 맞는지 알려주세요. 고맙습니다!

답변

3

예, 추론이 올바른지, 삽입의 속도가 datetime (3.33ms)

SQL 서버 2008의 단위보다 훨씬 적은 제공 더 높은 정밀도 (100 나노 세컨드)의 새로운 데이터 유형 DATETIME2을 가지고 있습니다.

적당한 여유 공간 (FILLFACTOR : 80-90)을두고 색인을 정기적으로 (일주일에 한 번) 다시 작성하면 모두 잘되어야합니다.

0

"데이터베이스 엔진 튜닝 마법사"를 사용하는 것이 가장 좋은 방법이라고 생각합니다. 귀하의 사례에 가장 적합한 선택을 할 것입니다. 분석을 실제 상황에 가장 잘 맞출 수 있도록 여러 사례를 포괄 할 수있을만큼 길게 실행하면됩니다.

당신은 (SQL 서버 2005) http://msdn.microsoft.com/en-us/library/ms189303%28SQL.90%29.aspx에서 자세한 내용을 찾을 수 있습니다

+0

DTA는 적절한 작업을 수행하지만 때때로 '잘못된'색인을 제안합니다. –

3

클러스터링 색인을 선택하기 전에 우선 순위를 설정해야합니다. 더 중요한 것은 : 빈번하지 않은 선택 속도를 높이거나 빈번한 삽입을 최소한으로 늦추는 것입니다. 삽입이 더 중요한 경우 기존 클러스터링 색인을 유지하십시오.

+0

감사합니다. 이것은 내가 고려해야 할 것입니다. 그렇다면 ID를 클러스터 된 인덱스로 유지하면 클러스터 된 인덱스를 LogDate로 설정하는 것보다 삽입 성능이 약간 더 좋아질 것입니다. – janem

+0

@janemoreno. 예. 중복 된 LogDate가있는 행을 삽입하면 유니 파이어가 필요하므로 (LogDate에 클러스터 된 경우) 다소 느려집니다. –

관련 문제