2013-02-21 2 views
2

사실 나는 의심의 여지가 있으므로 그것을 분명히하십시오. 나는 2 선, 같은 일을 두 선이 같은 일을 일두 매개 변수 사이의 차이점을 할당

1. cmd.Parameters.AddWithValue("@UserName",objBELUserDetails.UserName); 

2. cmd.Parameters.Add("@UserName",SqlDbType.Nvarchar,50). 
             Value=objBELUserDetails.UserName; 

아래를 참조해야합니다.

크기를 제공하지 않으면 크기는 매개 변수의 값인 문자열의 길이로 기본 설정됩니다. 유형을 생략하면 매개 변수 값의 유형을보고 큰 경우 문을 사용하여 객체의 유형을 관련 Sql 유형에 매핑합니다. 분명히 타입을 제공하면 코드의 성능을 향상시킬 수 있으므로 분명히 도움이됩니다.

두 번째 코드 줄이 처음 것보다 시간이 오래 걸리고 첫 줄에 특정 형식과 크기가있는 코드의 성능에 영향을 미쳐서 컴파일러가 찾을 시간이 필요하지 않다고 생각하지 않습니까? 매개 변수의 유형과 크기를 지정합니다. 그렇지 않니?

+0

프로파일 링이 표시 한 라인이 성능을 위해 신청서에서 가장 중요하거나 (예 : 20 %), 이것이 위와 같습니다. 그렇지 않다면 왜 시간을 보내고 있습니까? –

답변

0

command.Parameters.Add 형식을 명시 적으로 제공하지 않으면 암시 적으로 입력을 예상되는 형식으로 변환하려고 시도합니다.

이 암시 적 변환은 최적의 변환이 아니므로 성능에 영향을 줄 수 있습니다. 여기

검사 : Parameters.AddWithValue vs. Parameters.Add

1

그래서 당신은 코드의 두 번째 라인은 처음보다 더 많은 시간이 걸릴 것이라고 생각하고 첫 번째 줄과 같은 특정 종류와 크기가 코드의 성능에 영향을주지 않습니다 그래서 컴파일러는 매개 변수의 유형과 크기를 알아내는 데 시간이 걸리지 않습니다. 그렇지 않니?

첫 번째로, 나는 당신이 "첫 번째"와 "두 번째"를 잘못 생각한 것 같습니다. 특정 유형 및 크기를 갖는 두 번째 버전입니다.

둘째, 성능이 크게 모든 경우 암시 적 타입에 영향을하지 않을 당신이 명시 적으로 지정하고있는 것과 동일합니다. 데이타베이스 쿼리 - 실제로 객체의 유형과 문자열의 길이를 찾는 것이 거의 모든 네트워크 활동과 관련된 나머지 호출과 비교하여 측정 가능하다고 생각합니까? 유형이 이라고 잘못 추론 된 경우은 다른 곳에서 추가로 변환을 일으켜 피할 수 있습니다.

매개 변수의 유형과 크기를 지정해야하는 중요한 이유가 있습니다. 매개 변수에 대한 정보를 명시 적으로 지정하고 누구나 데이터베이스가 예상하는 것과 일치하는지 확인할 수 있습니다. 문자열을 숫자로 변환 할 수있는 여러 유형이 있습니다. 유형을 명시 적으로 말하면 모호성을 제거합니다.

관련 문제