2017-01-09 1 views
1

자세한 내용을 제공하기 전에 일반적인 대답이 있는지 확실하지 않습니다. exmaple를 들어master 데이터베이스의 뷰에 대한 쿼리가 특정 데이터베이스의 쿼리보다 훨씬 느립니다.

: 나는라는 전망이

나는 결과를 얻으려면 다음과 같은 두 가지 쿼리를 시도 vw_View :select * From [test].[dbo].[vw_View]

  • 테스트 데이터베이스에서

    1. 마스터 데이터베이스에서를select * From [dbo].[vw_View]

    2. 내가 실제 실행을 체크 한

      Use [db] --any other databases not master database 
      select * From [test].[dbo].[vw_View] 
      

      : 동일한 쿼리에 대한하지만 master 데이터베이스에서 쿼리가 다른 데이터베이스에서 대한 쿼리보다 훨씬 느린 이유

    사람이 말해 줄 수, 난에 의해 다른 시도 계획, 조인 순서는 다르지만 왜 내가 master

    아래에있을 때 이미 지정했기 때문에 변경 될 것입니다. 호기심 때문에, 미리 감사드립니다.

  • +0

    그냥 추측하지만 어쩌면 그 계획은 캐시에서 나오고 캐시 된 시점은 달라졌을 것입니다. 'with recompile'을 사용하면 여전히 다른 계획이 있습니까? –

    +0

    댓글을 주셔서 감사합니다.하지만 문제가 남아 있습니다. ( – LONG

    답변

    2

    이 대답하지 않을 수 있지만 개발자가 느리게 실행 절차에 대해 불평 할 때 우리가 많이 듣고

    한 가지입니다 ... 어쨌든 코멘트 너무 많은 텍스트이었다 단지 응용 프로그램에서 호출 될 때 느리게 실행되지만 SSMS에서 실행될 때는 정상적으로 실행됩니다.

    종종 프로 시저가 호출되는 위치에 따라 실행 설정이 다르기 때문입니다. 이러한 설정에 차이가 있는지 확인하려면 일반적으로 SQL 프로필러를 사용합니다. 당신이 Master 데이터베이스의 컨텍스트와 User Database 실행 SQL 프로파일 러의 맥락에서 다른에 SSMS 하나에 두 개의 서로 다른 창을 열 수있는 경우

    , 바로 그 첫 번째 이벤트 프로파일 러가 될 것 캡처 할 Event Class = Existing ConnectionsText Data = -- network protocol: LPC......

    이 기록은 당신에게 당신이 명령을 실행중인 각 세션에 대한 모든 기본 설정을 표시합니다, 설정은 이제

    -- network protocol: LPC 
    set quoted_identifier on 
    set arithabort off 
    set numeric_roundabort off 
    set ansi_warnings on 
    set ansi_padding on 
    set ansi_nulls on 
    set concat_null_yields_null on 
    set cursor_close_on_commit off 
    set implicit_transactions off 
    set language us_english 
    set dateformat mdy 
    set datefirst 7 
    set transaction isolation level read committed 
    

    두 세션의 설정을 비교하고 참조 .... 같이 보일 것입니다 무슨 차이점이 있습니다.

    또한 프로파일 러에는 어떤 창인지 식별하는 데 도움이되는 SIPD 열이 있습니다. 나는 그 대답이 어딘가에 있다고 확신한다.

    +0

    답변을 주셔서 감사합니다.하지만 동일한 세션 내에서 동일한 세션에서이 두 세션을 실행했습니다. – LONG