2011-01-28 3 views
0

내 테이블에 300 개 이상의 레코드가 테이블에 있습니다. 쿼리 선택 특정 테이블에 대해 느리게 실행 중

는 경우, 예를 들어, 나는 그것이 빠른 실행

select top 200 * from tablename 

를 실행합니다. 하지만 실행하는 경우

select top 301 * from tablename

그것은 오랜 시간 동안 실행하는 것 ..... 또한

, 나는 전혀 다음 쿼리를 실행할 수 없습니다 :

select * from tablename

... 너무 느립니다 ...

해당 테이블에서 301 이후의 레코드를 삭제하고 싶습니다.

+0

(300) 기록을? 그게 많지는 않습니다. –

+1

열린 트랜잭션 (커밋되지 않은 삽입/업데이트/삭제)에 의해 차단되어 "200"과 "301"사이에 적어도 하나의 행이 잠길 수 있습니다. 'tablename에서 (nolock)'return top 301 *을 빨리 선택합니까? –

+0

또는 301 레코드 후에 삭제하는 방법 – Karthik

답변

1

너의 테이블은 얼마나 넓습니까? 테이블 정의는 어떤 모양입니까? 당신은 ID 열이있는 경우

당신은이 작업을 실행할 수 있습니다 :

delete from dbo.Table where TableID>301 
관련 문제