SSMS에서보다 코드에서 실행할 때 쿼리가 훨씬 느린 이유는 무엇입니까?
동일한 쿼리 및 실행 환경에도 불구하고 쿼리가 SSMS(SQL Server Management Studio)와 비교하여 코드에서 실행될 때 눈에 띄는 시간 차이가 나타납니다. 이 질문에서는 이러한 불일치의 근본 원인을 자세히 조사합니다.
문제 조사
제공된 코드 비교를 통해 @clientID 매개변수의 데이터 유형이 C# 코드 및 SSMS 스크립트. C#에서 AddWithValue 메서드는 매개 변수를 NVARCHAR로 추가하는 반면 SSMS에서는 매개 변수가 VARCHAR로 선언됩니다.
데이터 유형 우선 순위 및 SARG 가능성
데이터 유형 우선 순위 규칙으로 인해 Where client_id = @clientID 표현식은 @clientID일 때 SARG가 가능하지 않습니다(검색 인수). client_id 열이 VARCHAR 유형이라고 가정하면 NVARCHAR 유형입니다. 이로 인해 쿼리 최적화 프로그램은 비용이 많이 드는 테이블 스캔을 수행하게 됩니다.
해결책
이 불일치를 해결하려면 다음 중 하나를 수행하십시오.
SqlParameter clientIDParam = new SqlParameter("@clientID", SqlDbType.Varchar, 200); clientIDParam.Value = ClientID; ada.SelectCommand.Parameters.Add(clientIDParam);
Where client_id = cast(@clientID as varchar(200))
데이터 유형을 명시적으로 지정하면 잠재적인 캐시 오염 문제를 방지하는 데 도움이 됩니다.
더 나아가 고려 사항
이러한 데이터 유형의 미묘한 차이를 이해하고 권장 솔루션을 구현하면 코드와 SSMS 간의 쿼리 성능 불일치를 해결할 수 있습니다.
위 내용은 SSMS보다 코드에서 SQL 쿼리가 훨씬 느린 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!