2016-09-02 2 views
0

현재 ASP.NET/VB로 작성된 웹 응용 프로그램의 검색 기능을 분석 중입니다. 홈 페이지의 검색 기능은 웹 서비스의 결과를 요청하며 웹 서비스는 SQL 쿼리를 실행하고 결과를 다시 보냅니다.ASP.NET에서 SSMS보다 10 배 빠른 쿼리

성능을 분석하기 위해 응용 프로그램을 로컬에서 디버깅하고 SET STATISTICS TIME ON으로 실행하기 위해 쿼리를 SSMS에 복사했습니다.

응용 프로그램을 실행하고 브라우저의 개발자 도구에서 내 서비스 요청에 대한 응답 시간을 확인하면 약 300 밀리 초가되는 경향이 있습니다. SSMS에 정확히 같은 검색어를 복사 할 때 모든 매개 변수를 수동으로 설정하십시오 (예 : "DECLARE @SearchTerm VARCHAR = '% foobar %'"). 쿼리는 1500ms에서 2000ms 사이의 어느 곳에서나 실행됩니다.

저는 응용 프로그램에서 더 느리게 실행되는 쿼리가 무수히 많이 언급되었지만 그 반대의 이유는 무엇인지 알 수 없습니다.

누구나 과거에 비슷한 경험을했거나이 동작에 대한 가능한 설명을 찾았습니까?

+0

응용 프로그램에서 선택을 보내기 전에 어떤 명령이 데이터베이스로 보내지 는가를 프로파일 러에서 볼 수 있습니까? – GuidoG

+0

어쩌면 저장소 proc를 실행하거나 직접 쿼리를 실행하는지에 따라 달라질 수 있습니다. 저장 프로시 저는 컴파일되고 다른 통계를 사용할 수 있습니다. –

+0

잘 모르겠지만 변수가 아니라 스니핑 매개 변수의 문제가 될 수 있습니다. '% foobar %'를 검색 쿼리에 넣고 동일한 시간이 걸리는지 확인할 수 있습니까? –

답변

1

쿼리 및 관련 쿼리 계획을 포함하지 않았기 때문에 추측해야합니다. 나는 당신이 @SearchTerm (그리고 다른 것들)에 대해 SSMS와 ASP 페이지의 질의를 위해 다른 값을 사용하고 있다고 생각한다. 쿼리에는 전달 된 매개 변수를 기반으로 처음 사용한 쿼리 계획이 최적화되어 있으며 SSMS에서 실행하면 부적절한 쿼리 계획이 사용됩니다 (다른 매개 변수가 전달되는 경우).

+0

Google "매개 변수 스니핑"을 참조하십시오. –

관련 문제