2012-01-11 5 views
4

이제 인덱스를 만드는 데 도움을 받으려합니다.SQL Server 2008 R2 인덱스 만들기

지금이

table description screen cap

이 내가 최대의 성능에 대한 인덱스를 필요로하는 쿼리 내 테이블 구조

입니다.

select PageId 
    from tblPages 
    where UrlChecksumCode = @UrlChecksumCode 
     and PageUrl = @PageUrl 

이제 색인이 매우 나쁩니다. 쿼리가 실행될 때 처음에는 UrlChecksumCode 행을 찾아서 페이지 열을 찾습니다. 그런 색인을 만드는 이유를 설명해 주시면 정말 고맙습니다. 고맙습니다.

+0

하나를 위해 만들 수 있다고 생각 1000 nvarchar 또 하나 bigint입니다. 나는 인덱스에 큰 차이가 있어야한다고 생각합니다. – MonsterMMORPG

+0

동일한 URL을 가진 레코드가 여러 개있을 수 없습니다. – MonsterMMORPG

+1

Andrew Barber 나는이 질문을 정말로 이해하지 못했다고 생각한다. – MonsterMMORPG

답변

10

한 가지 방법, 당신의 PAGEURL 오래이기 때문에 (NVARCHAR (1000 큰 텍스트 인덱스를 필요로하기 때문에 경우) 당신이 포함 된 열을 사용하지 않는 경우 인덱스는 900 바이트 수 있습니다,이 index with included columns

create index ix_IndexName on tblPages (UrlChecksumCode) INCLUDE(PageUrl) 

또는

create index ix_IndexName on tblPages (UrlChecksumCode) INCLUDE(PageUrl, PageID) 
을 만들었습니다

도 참조 SQL Server covering indexes

왜 varchar 대신 nvarchar ... 유니 코드가 될 수 있습니까? 하지 않으면 것은이 VARCHAR하고 1/2 크기를 저장

+0

이것은 실제로 내가 찾고있는 것이 아닙니다. 색인은 urlchecksumcode에 있어야합니다. 색인을 생성 할 페이지를 포함하지 않을 수도 있습니까? – MonsterMMORPG

+2

+1 인덱스의 PageId 열도 포함합니다. –

+0

색인의 열 순서는 먼저 urlchecksumcode를 찾고, 내 질문에 추가 한 기사를 읽으십시오. – SQLMenace

0

(UrlChecksumCode and PageUrl) 이상의 색인을 원할 것입니다.

당신은 몇 가지 데이터 패턴에 따라, 더 나은 성능을 가질 수 있지만 그냥 인덱스 이상 (UrlChecksumCode)를 PageUrl

+0

예하지만 인덱스를 만드는 방법을 찾고 있습니다. 나는 이미 이것을 알고있다. – MonsterMMORPG

1

 create nonclustered index indexname on tablename(columnname) 

드롭 지수

 Drop Index index name on tablename 

데이터베이스에있는 모든 인덱스보기를 클러스터되지 않은 인덱스 만들기

 select * from sys.indexes 
-2

는 심지어 우리가 TABLENAME (columnName1, columnName2, ......) 에 clusteredindex someName 을 만들 처럼 빠른 검색으로 clusterd 인덱스를 사용할 수 있지만 하나 개의 클러스터 된 인덱스 우리는 탭

관련 문제