2010-11-22 3 views
1

정말 이상한 일이 있습니다.SQL 서버의 테이블에서 모든 데이터를 선택할 수 없습니다.

400,000 개의 레코드가있는 테이블 (T).

이 선택시 :

select top 150000 * from T 

내가 3 secondes

에 대답을 얻었다 그러나 나는 그들 모두를 가지고가는 경우에, 나는 결과를하지 않고 5 분 후에 요청을 중지합니다.

이 문제에 대해 알고 싶습니다.

들으,

구덩이

+1

테이블에 인덱스가 있습니까? –

+0

데이터 선택 방법은 무엇입니까? SMS를 사용하십니까? – abatishchev

+0

왜 클라이언트에 400.000 개의 레코드를 가져 오려고합니까? 쿼리 계획을 살펴볼 수 있습니까? – Jan

답변

4

원인을 찾기 위해 주요 영역은 다음과 같습니다

  1. 디스크 IO
  2. 캐시 적중률
  3. 테이블의 페이지에 블록 다른 프로세스 때문에 (쿼리에 WITH (NOLOCK) 테이블 힌트 추가)
  4. 네트워크 병목 현상 (goi

나는 인덱스가 필요하지 않으며 테이블의 각 페이지를 읽어야한다는 Arman의 의견에 동의합니다.

+0

등록되지 않은 사용자이므로 upvote 할 수는 없지만 숫자 3을 강하게 의심 할 것입니다. –

+0

(NoLock)으로 추가하는 것이 좋습니다 !!! –

+0

요청이 읽으려는 테이블을 잠그려고하면 블록이 차단됩니까? 또한 뭔가 stange : 2 ndx 내가 테이블에 만들지 않았다 및 추정 계획 결과 중 하나를 소요됩니다. 그래서 나는 그 2 ND와 재시험을 해독 할 것이다. –

관련 문제