필자는 하루 종일 ~ 9 백만 행의 SQL Server 2000 db 테이블 최적화 작업을했습니다. 필자 만의 DB 경험은 수백 줄의 테이블을 가지고 있으므로 최적화를 다루지 않아도된다.SQL Server 2000 테이블 최적화
21 자리 숫자를 기준으로 선택 및 업데이트를 수행하고 있습니다.
인덱싱 된 char (21) 형식을 사용하면 쿼리에 2 초 이상 걸리고 SQL Server 프로세스에는 1.5GB의 RAM과 100 % CPU가 필요합니다.
인덱싱 된 bigint 형식을 사용하면 쿼리에 몇 밀리 초가 걸리고 프로세스에 약 100MB의 RAM이 필요합니다.
여기서 일어나는 일을 이해하고 싶습니다. 정상입니까? 아니면 성능 향상을 위해 char 유형을 인덱싱 할 수있는 구체적인 방법이 있습니까?
내 SQL의 Heres는 몇 가지 : C#을에서
CREATE TABLE data
(
tableID int NOT NULL IDENTITY PRIMARY KEY,
tag char(21) NOT NULL UNIQUE,
dataColumn1 datetime NULL,
dataColumn2 char(8) NULL,
lastModified datetime NOT NULL
)
매개 변수화 된 쿼리 : 어떤 도움
SELECT tag FROM data WHERE tag = @tag;
감사합니다.
이 모든 것이 정확한 표현이라고 가정하고 'tag'에 대한 인덱스가 있다고 가정 해 보겠습니다 ... 또 다른 제안은 각 쿼리를 테스트하기 전에 'DBCC FREEPROCCACHE' 및'DBCC DROPCLEANBUFFERS'를 시도해보십시오. 캐시 된 결과를 사용하고 있지 않은지 확인하십시오. 또한 실행 계획을 게시 할 수 있는지 확인하십시오 ('SET SHOWPLAN ON'). 계획에서 클러스터 된 인덱스 찾기 (또는 일반 인덱스 찾기)가 표시되고 검색, 책갈피 조회 또는 RID 조회가 없다면 속도를 향상시키기 위해 할 수있는 일은별로 없을 것입니다. – Aaronaught