쿼리 성능

이 특별한 경우 30,000 개의 행이 데이터베이스를 처리하기에 너무 어렵지 않기 때문에 큰 차이를 알 수 없습니다. 그러나 수억 개 이상의 행에 대해 이야기하는 경우 참여하기 전에 집계하여 눈에 띄는 개선을 볼 수 있습니다. 이 작업을 수행 할 때,당신이하고있는 일이 논리적으로 일관성이 있는지 확인—당신은 실행 속도에 대한 걱정 전에 작업의 정확성에 대해 걱정해야합니다.

13 쿼리 성능 팁

개체 이름 앞에 접두사를 지정해야 합니다(예: 소유자/스키마 이름이있는 테이블,저장 프로 시저,뷰).

이유:소유자/스키마 이름이 제공되지 않으면 개체가 찾을 때까지 모든 스키마에서 해당 이름을 찾으려고 합니다. 소유자/스키마 이름이 제공된 경우 해당 소유자/스키마 외부의 테이블을 검색하지 않습니다.

*연산자

는 선택 문에서*연산자를 사용하지 않습니다. 대신 열 이름을 사용하십시오.

이유:모든 열 이름을 검색하고*를 선택 문에 있는 테이블의 모든 열 이름으로 바꿉니다. 열 이름을 제공하면이 검색 및 바꾸기를 피하고 성능을 향상시킵니다.

널 가능 열

널 가능 열과 비교할 때는 안 함을 사용하지 마십시오. 사용 대신 존재하지 않습니다.

이유:쿼리에서 사용되지 않는 경우(쿼리에서 널 값이 있는 행을 반환하지 않는 경우에도)각 결과를 검사하여 널인지 아닌지 확인합니다. 존재하지 않음을 사용하면 널과 비교되지 않습니다. 또한 존재하지 않는 상태는 두 가지 상태(참 또는 거짓)만 반환하는 반면,존재하지 않는 상태는 최대 세 가지 상태(참,거짓,널)를 반환 할 수 있으며 예상 한 결과를 제공하지 않을 수 있습니다.

테이블 변수 및 조인

조인에 테이블 변수를 사용하지 마십시오. 대신 조인에 임시 테이블,공통 테이블 표현식 또는 파생 테이블을 사용하십시오.

이유:많은 상황에서 테이블 변수가 매우 빠르고 효율적이더라도 단일 행으로 간주합니다. 이러한 이유로 인해 조인에 사용될 때 끔찍하게 수행되는 실행 계획이 생성됩니다.

저장 프로시저 이름

이유:저장 프로시저의 이름이 지정된 경우 소유자/스키마 이름이 제공된 경우에도 항상 시스템/마스터 데이터베이스를 체크 인합니다. 이 메서드는 저장 프로시저에서 사용할 수 있습니다.

이유:디엠엘 작업을 수행할 때(즉, 삽입,삭제,선택 및 업데이트),영향을 받는 행 수를 항상 반환합니다. 조인이 많은 복잡한 쿼리에서는 큰 성능 문제가 됩니다. 영향을 받는 행 수를 추적하지 않으므로 성능이 향상됩니다.

그룹 기준,순서 기준 및 구분 사용 금지

가능하면 그룹 기준,순서 기준 및 구분 사용 금지.

이유:그룹 기준,순서 기준 또는 고유 항목을 사용할 때 작업 테이블을 만들고 데이터를 작업 테이블에 넣습니다. 그런 다음 쿼리에서 요청한대로 작업 테이블에서이 데이터를 구성한 다음 최종 결과를 반환합니다.

인덱스 확인

여기서 사용되는 모든 필드에 인덱스가 있어야 합니다.

이유:필드가 인덱싱되지 않은 경우 일반적으로 전체 테이블 검색을 수행하므로 성능이 저하될 수 있습니다. 테이블이 매우 작지 않는 한 테이블 검색은 모든 데이터베이스 읽기 유형 중에서 최악의 성능을 제공하는 경향이 있습니다.

조인과

절에서 동일한 데이터 유형을 사용하십시오.이 절은 스키마를 변경할 수있는 권한에 따라 수행하는 것보다 쉽습니다.

이유:서로 다른 데이터 유형을 가진 두 필드를 조인하거나 비교할 때 필드가 인덱싱된 경우에도 비교를 수행하기 전에 필드를 즉시 변환해야 합니다. 일치하지 않는 데이터 유형을 피할 수없는 경우 가능한 한 더 큰 데이터 유형을 더 작은 데이터 유형으로 캐스팅하십시오.

조인 및 여기서

절에서 계산된 필드를 사용하지 마십시오. 아래 참조.

Leave a Reply

이메일 주소는 공개되지 않습니다.