ORM으로 EntitySpaces를 사용하는 프로젝트에서 작업하고 있습니다.EntitySpaces에서 저장 프로 시저를로드하는 데 SQL 클라이언트보다 40 배 더 오래 걸림
당신은 저장 프로 시저를 호출하여 컬렉션을로드 ItemCollection의 단순화 된 방법을 참조 아래 :
declare @p5 int
set @p5=485
exec [ItemsStoredProcedure] @Param1=4,@Param2=N'41',@Param3=N'SomeValue',@Param4=0,@[email protected] output,@Param5=1,@Param6=25
select @p5
: SQL Server 프로파일 러 나는 그 데이터베이스에이 호출의 결과입니다 참조 사용
public partial class ItemCollection : esItemCollection
{
public bool LoadItemsUsingSomeStoredProcedure(string aLotOfAttributes, out int totalCount)
{
// Set a lot of parameters
esParameters parameters = new esParameters();
// ...
bool result = Load(esQueryType.StoredProcedure, "ItemsStoredProcedure", parameters);
totalCount = (int) paramTotalCount.Value;
return result;
}
}
을
약 200 초이 완료됩니다.
하지만 SQL Management Studio (로컬 및 원격)에서 동일한 SQL 조각을 실행하면 약 4 ~ 5 초가 걸립니다.을 완료하십시오.
EntitySpaces 호출이 SQL 클라이언트의 호출보다 완료되는 데 약 40 배 더 오래 걸리는 아이디어가 있습니까? 어떤 아이디어를 어떻게 디버그/개선 할 수 있습니까?
추 신 : EntitySpaces를 대체하는 것이 나의 WANT 목록에서 높지만 언제나 그렇듯이 클라이언트가 "작동하는"프로그램을 리팩토링하는 데 한 달의 개발을 보내도록 설득하는 것은 정말로 어렵습니다 ... 그 옵션이 꺼져 있습니다. .
200 초; ES를 통해 SQL 부분을 타이밍을 잡거나, 구체화 등을 포함한 전체 스택을 타이밍합니까? 그것이 SQL 부분이라면, 다른'SET' 옵션이 범인이라고 의심 할 수 있습니다 (예 : 계산 된 + 지속 + 색인 된 열을 깨뜨려 테이블 스캔을 강제 실행하고 재평가). 그러나 ES materialization이 느릴 수도 있습니다. 또는 부풀어 오른 컨텍스트를 가지고 있습니다 (즉 컨텍스트를 분리하고 슬림하게 유지하는 대신 많은 컨텍스트로 많은 컨텐트로드) –
실제로 SQL Server 프로필러에서 볼 수 있듯이> 200 초가 SQL 부분의 타이밍입니다. 다른 'SET'옵션으로 자세히 설명 할 수 있습니까? –
또 다른 이유는 SQL Management Studio가 첫 번째 X 항목 만 가져올 수 있기 때문입니다. –