2009-11-04 2 views
2

안녕하세요 저는 Entity Framework와 동일한 데이터베이스에 액세스 할 10 대의 컴퓨터에 설치할 Windows 응용 프로그램을 만들고 있습니다.많은 연결 대 큰 데이터 쿼리

내가 더 나은 궁금 하였다.

  1. 확산 쿼리를 패킷으로 (즉, 부하 접촉 후 포함 된 탐색 속성을 첨부 - [DataContext.Contacts.Include을 ("전화"])
  2. 로드 다 한 쿼리에서보다는 개별 쿼리에 그것을 밖으로 분할.
  3. 당신은 그것을 이름을 지정합니다. BTW

나는 그것의 추적 문자열은 SQL의 500 라인을 생성하는 쿼리가, 메신저 의심 , 어쩌면 나는 성능 때문에 사용자 - exprience 면제해야한다 또한 성능의 일부입니다.

+2

SQL의 500 줄은 매우 빠르다. –

답변

1

대신 모든 쿼리를로드하여 개의 쿼리로 모두 나눕니다.

이것은 일반적으로 우수합니다. 대개 수다스러운 질문보다는 복잡한 쿼리를 작성하는 것이 좋습니다. 콜 수가 적을수록 오버 헤드가 적습니다. 적은 수의 연결을 확보하고 대기 시간을 줄이는 등의 작업이 필요합니다.

데이터베이스 서버가 다른 응용 프로그램을 지원해야합니까? 대부분의 비즈니스 소프트웨어 응용 프로그램에서 SQL 서버는 10 개의 클라이언트를 서비스하는 땀을 흘리지 않습니다. 특히 기본 엔티티 조회를 수행하는 것이 좋습니다. 486SX에 설치되어 있지 않으면 거기에 있다는 사실조차 알 수 없습니다.

2

SQL을 저장 프로 시저에 넣고 Entity Framework 논리를 작성하여 SQL을 생성하고 와이어를 통해 보내는 대신 프로 시저를 사용할 수 있습니다.

+0

좋은 아이디어입니다. 그러나 나중에, 20 개의 별도 연결보다 큰 쿼리 나 1 개의 큰 쿼리를 피해야합니까? – Shimmy

+1

하나의 큰 쿼리가 좋으며 대부분의 경우 일반적으로 원하는 내용 일 것입니다. 그러나 저장 프로 시저를 사용하면 부모 프로 시저를 0 또는 여러 하위 프로 시저로 구성하여 큰 쿼리를 정리하거나 작은 쿼리로 분해 할 수 있습니다. 따라서 .net 논리는 부모 proc를 호출하지만, 부모는 0 또는 여러 개의 자식 procs를 호출하여 필요한 데이터를 제공 할 수 있습니다. – Kuberchaun

2

모든 데이터베이스와 관련하여 달라집니다. 연결 유형 (LAN 대 WAN), 캐싱, 데이터베이스로드 수준, 데이터베이스로드 유형 (vs 읽기 쓰기) 등을 처리하는 방법은 모두 차이를 만들 수 있습니다.

그러나 일반적으로 데이터베이스에 대한 왕복 횟수를 줄이는 것이 좋습니다. 그리고 하나의 SqlCommand를 실행 한 후에 둘 이상의 결과 집합을 가질 수 있습니다.

+0

그것은 클라이언트와 서버 모두 10g LAN 네트워크에 설치 될 것입니다. – Shimmy