SQLSERVER 에서 색인 알림 무시
SELECT id,name from TB with (index(IX_xttrace_bal)) where bal<100
생산 환경 에서 이 색인 알림 의 원인 으로 인해 유 틸 리 티 는 일반적으로 다른 색인 을 고려 하지 않 습 니 다.그러면 가끔 이 색인 알림 은 조회 가 느 려 질 수 있 습 니 다.테스트 를 통 해 이 색인 알림 때문에 조회 가 느 려 진 것 은 사실 이지 만 SQL 서버 는 이 SQL 문장의 실행 계획 을 캐 시 했 습 니 다.SQL 문 구 를 수정 하면 영향 을 줄 수 있 습 니 다.
그리고 한 개의 SQL 문장 만 색인 힌트 를 사용 한 것 이 아니 라 다른 SQL 문장 도 색인 힌트 를 사 용 했 을 수도 있 습 니 다.이 SQL 문장 을 바로 수정 할 수 없 을 때 SQLSERVER 에 있 는 trace flag 를 사용 할 수 있 습 니 다.
이 trace flag 는 SQL 구문 의 색인 알림 과 저장 과정 에서 의 색인 알림 을 무시 할 수 있 습 니 다.
SQL 문 구 를 수정 하지 않 아 도 성능 검 사 를 할 수 있다.
다음 스 크 립 트 를 실행 하여 데이터베이스 와 관련 색인 을 만 듭 니 다.
USE master
GO
IF DB_ID('Trace8602') IS NOT NULL
DROP DATABASE Trace8602
GO
CREATE DATABASE Trace8602
GO
USE Trace8602
GO
CREATE TABLE xttrace8602
(
id INT IDENTITY(1, 1)
PRIMARY KEY ,
bal INT ,
name VARCHAR(100)
)
GO
CREATE NONCLUSTERED INDEX IX_xttrace8602_bal_name ON xttrace8602(bal,name)
GO
CREATE NONCLUSTERED INDEX IX_xttrace8602_bal ON xttrace8602(bal)
GO
INSERT INTO xttrace8602
VALUES ( RAND() * 786, 'cnblogs.com/lyhabc' )
GO 10000
CREATE PROC uspFirst
AS
SELECT id ,
name
FROM xttrace8602 TF WITH ( INDEX ( IX_xttrace8602_bal ) )
WHERE bal < 100
GO
다음 코드 를 실행 합 니 다.
--
EXEC uspFirst
GO
--
DBCC TRACEON(8602,-1)
GO
DBCC FREEPROCCACHE
GO
EXEC uspFirst
GO
보 이 는 바 와 같이 TRACEON(8602,-1)추적 로 고 를 연 후 SQLSERVER 는 색인 알림 을 무시 하고 복합 색인 IX 를 이용 합 니 다.xttrace8602_bal_데이터 검색
추가 키 찾기 가 필요 없습니다.
이 추적 표 지 는 SQL 문 구 를 수정 하지 않 아 도 SQLSERVER 에서 색인 알림 을 무시 할 수 있 습 니 다.
이 8602 추적 표 지 를 사용 하기 전에 개발 환경 테스트 를 통 해 성능 문 제 를 만 들 기 위해 색인 힌트 를 무시 해 야 하 는 지 확인 하 세 요.
잘못된 점 이 있 으 면 벽돌 을 찍 는 것 을 환영 합 니 다 o(∩∩)o
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
SqlServer 데 이 터 를 Oracle 로 이전 하 는 방법 요약1. BCP 명령 을 사용 하여 csv 파일 로 Sqlserver 의 데 이 터 를 내 보 냅 니 다.우 리 는 이 명령 들 을 cmd 명령 으로 쓸 수 있 습 니 다. 문 구 는 다음 과 같 습 니 다. sql 문...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.