Azure Boards 고성능 쿼리를 만들기 위한 지침

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019 | TFS 2018

작업 항목 쿼리를 쉽게 만들 수 있지만 고성능 쿼리를 만들려면 심층적인 이해가 필요합니다. 쿼리 성능을 개선하여 개별 생산성, 대시보드 성능 및 리소스 속도 제한을 향상시킵니다.

참고

서비스 또는 리소스 속도 제한에 대한 참조는 Azure DevOps Services 대해 실행되는 쿼리에만 적용됩니다. 자세한 내용은 서비스 제한 및 속도 제한을 참조하세요.

이 문서에서는 고성능 쿼리를 작성하는 방법에 대한 일반적인 지침을 제공합니다. 이러한 지침은 만드는 다음 쿼리에 적용됩니다.

집중된 선택적 쿼리 만들기

고성능 쿼리의 첫 번째 지침은 고도로 선택적인 쿼리를 정의하는 것입니다. 이렇게 하려면 쿼리에 필요한 모든 필터를 적용합니다. 쿼리가 선택적일수록 결과 집합이 작습니다. 결과 집합이 작을수록 쿼리의 대상이 더 많고 선택적입니다.

태그를 사용하여 작업 항목 분류

작업 항목 태그를 사용하여 사용자 지정 필드 대신 작업 항목을 분류합니다. 태그를 필터링하는 쿼리는 일반적으로 문자열 일치를 필터링하는 쿼리보다 더 빠르게 수행됩니다.

사용자 지정 필드 일치 또는 부분 일치와 달리 작업이 있는 Tags Contains 쿼리는 모든 작업 항목 테이블을 완전히 검색할 필요가 없습니다.

태그 필터링

문자열 일치에 사용 Contains words

문자열 일치를 필터링하려면 연산자 Contains Words 대신 Contains 사용합니다. 연산자는 Contains Words 지정된 필드에서 전체 텍스트 검색을 실행하며, 이 검색은 더 빠르게 완료되는 경향이 있습니다.

연산자는 Contains 연산자에 사용되는 것보다 느린 연산인 테이블 검색을 실행합니다 Contains Words . 또한 더 많은 CPU 주기를 사용합니다. 이러한 CPU 주기로 인해 속도 제한이 발생할 수 있습니다. 자세한 내용은 서비스 제한 및 속도 제한 및 속도 제한을 참조 하세요.

연산자를 In Group 사용하여 작은 그룹 지정

연산자는 In Group 값 그룹 내의 일치 항목을 기준으로 작업 항목을 필터링합니다. 값 그룹은 팀, 보안 그룹 또는 작업 추적 범주에 포함된 값에 해당합니다. 예를 들어 쿼리를 만들어 팀의 구성원에게 할당된 모든 작업 항목을 찾을 수 있습니다. 또는 요구 사항 범주(Microsoft.RequirementCategory)에 속하는 모든 작업 항목을 찾습니다.

많은 수의 멤버가 포함된 그룹을 필터링하면 결과 집합이 더 크고 선택적이지 않은 경향이 있습니다. 또한 그룹이 큰 Azure AD(Azure Active Directory) 그룹에 해당하는 경우 쿼리는 Azure AD 해당 그룹을 확인하는 데 상당히 큰 비용을 생성합니다.

부정 연산자 사용 방지

부정 연산자(예: <>, Not In, Not Under, Not In Group비선택적 쿼리 및 큰 결과 집합)를 생성하는 경향이 있습니다.

반드시 필요한 경우에만 부정 연산자를 사용합니다. 항상 먼저 대안을 찾으십시오. 예를 들어 Field1의이 A, B, C, D인 경우 Field1 In A, B, C 부정 절 대신 절을 Field1 <> D 지정합니다.

문자열 비교 방지

문자열 비교를 포함하는 쿼리는 본질적으로 비효율적인 테이블 검색을 생성합니다. 대신, 특히 쿼리가 제대로 수행되지 않는 경우 태그 또는 특정 사용자 지정 필드를 대안으로 사용하는 것이 좋습니다.

제한 Or 연산자

쿼리에 정의된 연산자 Or 수를 제한해 보세요. 쿼리는 더 적은 Or 수의 연산자를 사용할 때 더 잘 실행됩니다. 연산자가 너무 많 Or 으면 쿼리를 선택적이지 않은 것으로 만들 수 있습니다. 쿼리가 느리게 실행되는 경우 쿼리 절의 맨 위로 연산자 절의 순서 Or 를 다시 지정합니다.

쿼리 저장

쿼리 성능을 향상시키기 위해 쿼리를 저장합니다. 내부 최적화로 인해 저장된 쿼리는 저장되지 않은 쿼리보다 더 나은 성능을 발휘하는 경향이 있습니다. 쿼리를 다시 사용하려는 경우 항상 쿼리를 저장합니다. WIQL 쿼리가 REST API를 통해 실행되더라도 웹 포털을 통해 WIQL을 저장하여 REST API 호출이 향후 성능 회귀에 덜 취약해지도록 합니다.

REST API

프로그래밍 방식으로 쿼리와 상호 작용하려면 다음 REST API 리소스 중 하나를 참조하세요.