2008-09-26 9 views
1

CommandType = Text 인 Prepair()를 호출하려고하는 SqlCommand가 있습니다 (이 저장 프로 시저가 될 수 없음). 이를 수행하기 위해 매개 변수의 Size 속성을 0이 아닌 값으로 설정해야합니다. 그렇지 않으면 예외가 발생합니다. 실제 값의 크기가 그와 거의 같지 않더라도 모든 매개 변수의 크기를 가능한 최대 크기로 설정하면 부작용이 있습니까? 이 작업을 수행하는 더 좋은 방법이 있습니까?SqlParameter 크기 - 최대 크기로 설정하면 부정적입니까?

답변

1

나는 매개 변수에 대한 메모리 할당 비용과 같은 것을하는 잠재적 인 부정적인 부작용이 있다고 생각합니다.

당신이 'Prepare()'를 호출 했으므로 동일한 SqlConnection에 대해 SqlCommand를 여러 번 사용할 계획 인 것으로 추측됩니다. 연결이 닫히면 코드 섹션이 개별적으로 사용됩니다 준비된 명령의 경우 명령 텍스트는 다음 사용시 서버로 재전송되어야합니다.

매개 변수의 특성을 알고 있다면 잠재 크기에 대한 아이디어가있는 것 같습니다. 그렇지 않다면 각 대안에 대해 상당히 큰 크기를 선언하는 것보다 실제로 어떤 대안을 사용하는지 알지 못합니다.

0

매개 변수 이름과 값만 사용하는 SqlParameter 생성자를 사용하는 경우 프레임 워크에서 수행하는 방식입니다. 클라이언트 쪽에서 약간의 비효율이있을 수 있지만 쿼리 성능의 차이는 절대로 발견하지 못했습니다.

0

CommandType = Text를 사용할 경우 프로그래밍 방식으로 크기를 매개 변수의 실제 크기로 설정할 수 있어야합니다.

데이터 크기가 전송할 데이터 형식의 최대 크기에 가까워지면 성능이 저하됩니다. 매개 변수가 명령 텍스트의 크기에 비례하여 항상 커지면 네트워크 트래픽 측면에서 저장된 procs로 전환하여 성능면에서 최소한의 이득만을 볼 수 있습니다.

0

코드 샘플을 게시하십시오. .Prepare()를 호출하기 위해 매개 변수에 Size 속성을 설정할 필요가 없습니다.

특히 .Execute()를 호출하는 경우 .Prepare()를 호출 할 필요가 없을 것입니다.