2016-12-19 11 views
-1
  1. 쿼리 하나 - 인덱스이 쿼리가 왜 그렇게 느리게 실행되는지에 대한 아이디어가 있습니까?

    SELECT P.Date_Send_Ins,C.* 
    FROM DATABASE1..TABLE1 P JOIN DATABASE2..TABLE2 C ON P.COLUMN1 = C.COLUMN1 AND P.COLUMN2 = C.COLUMN2 
    WHERE LEFT(C.COLUMN3 ,7) LIKE 'YYYY/MM' and P.Date_Send_Ins LIKE 'YS%' 
    

검색어 1 ~ 3가 추구 - 인덱스가

SELECT P.Date_Send_Ins,C.* 
FROM DATABASE1..TABLE1 P WITH (FORCESEEK) JOIN DATABASE2..TABLE2 C ON P.COLUMN1 = C.COLUMN1 AND P.COLUMN2 = C.COLUMN2 
WHERE LEFT(C.COLUMN3 ,7) LIKE 'YYYY/MM' and LEFT(P.COLUMN3 ,2) = 'YS' 
  • 쿼리 두

    SELECT P.Date_Send_Ins,C.* 
    FROM DATABASE1..TABLE1 P JOIN DATABASE2..TABLE2 C ON P.COLUMN1 = C.COLUMN1 AND P.COLUMN2 = C.COLUMN2 
    WHERE LEFT(C.COLUMN3 ,7) LIKE 'YYYY/MM' and LEFT(P.COLUMN3 ,2) = 'YS' 
    
  • 쿼리 세 가지가 추구 빠른 SQL Server에서 쿼리 2가 너무 느리고 결과가 나타나지 않습니다.

    다른 서버에서 모두 빠르며 sp_updatestats을 실행합니다. 그러나 더 좋지 않습니다.

    이 문제를 해결하는 방법은 무엇입니까?

  • +1

    DATABASE1..TABLE1에 어떤 색인이 있습니까? –

    +0

    인덱스가 잘못되어 쿼리 속도가 느려졌습니다. 문제는 인덱스를 비활성화했을 때 해결되었습니다. 감사합니다. – shaghayegh

    +0

    당신은 천만에요. –

    답변

    0

    where 절의 테이블 열에 함수를 사용하지 마십시오. 거의 항상 성능 문제. 예 : LEFT()를 사용하지 마십시오.

    SELECT P.Date_Send_Ins,C.* 
    FROM DATABASE1..TABLE1 P 
    JOIN DATABASE2..TABLE2 C ON P.COLUMN1 = C.COLUMN1 AND P.COLUMN2 = C.COLUMN2 
    WHERE C.COLUMN3 LIKE 'YYYY/MM%' 
    and P.COLUMN3 = 'YS%' 
    
    +0

    이 함수는 사용하지 않지만 다른 사용자는이를 사용합니다. 저는 DBA이고 SQL Server 성능을 제어해야합니다. – shaghayegh

    +0

    괜찮지 만 그 사용자가 where 절의 데이터에 대한 함수를 피하는 방법을 알게하십시오. 그러면 도움이 될 것입니다. –