2010-04-19 2 views
0

내가 전화 할 때 :t-sql에서 정규화 된 이름으로 쿼리를 최적화하는 방법은 무엇입니까?

select * from Database.dbo.Table where NAME = 'cat' 

걸리는 :

200 MS

을 내가 Management Studio에서 데이터베이스로 데이터베이스를 변경하고 정규화 된 이름없이 호출 할 때 훨씬 빠릅니다 :

select * from Table where NAME = 'cat' 

소요 시간 :

17 MS

데이터베이스를 변경하지 않고 빨리 완전한 쿼리를 만들 수있는 방법이 있나요?

+0

이것은 잘못 캐싱 된 쿼리 계획 ... 또는 새 쿼리 계획을 만드는 것과 관련된 오버 헤드로 인해 발생할 수 있습니다 ... –

+0

Remus의 대답을 참조하십시오. http://stackoverflow.com/questions/1112374/sql- 서버 성능 및 정규화 된 테이블 이름 –

+0

@Mitch Wheat 고맙습니다.이 답변을 보았습니다. 데이터베이스를 쿼리 할 때마다 동일한 시간이 걸립니다. –

답변

1

이 솔루션의 자동 닫기를 false로 변경하는 중입니다.

+0

그리고 지금 꺼져 있습니까? – gbn

+1

@gbn 예, 꺼짐 –

0

두 번이 이므로이 다르다는 것을 감안할 때 SQL은 처음 실행했을 때부터 쿼리 계획을 캐시했기 때문에 두 번째 시간이 빠를 수도 있습니다. 그 둘을 서로 마주 치게 했니? 아무 것도 변경하지 않은 동일한 쿼리조차도 두 번째 실행시 훨씬 빨라집니다.

쿼리에 대한 정확한 실행 시간을 얻으려면 SQL을 실행할 때마다 캐시 된 쿼리 계획을 잊어 버려야합니다. 나는 SQL을 다시 시작하는 것이 그 일을하는 한 가지 방법이라고 생각한다.

+0

여러 번 쿼리를 실행하려고했습니다. , 역순으로 진행되며 여전히 동일한 결과를 나타냅니다. 처음 실행 후 아무 것도 바뀌지 않습니다 ... –

0

아마도 스튜디오가 데이터베이스에 대한 새 연결을 열어주기 때문입니다. 이를 제공하려면 2 개의 정규화 된 SQL 문을 넣으십시오. 첫 번째 구문의 차이점 만 표시해야합니다. 두 번째 연결은 동일한 연결에서 실행되어야합니다.

관련 문제