성능 차이가 없습니다. 그러나 스키마를 모르는 경우에도 현재 스키마를 사용하고 있습니다.
스키마로 규정 되지 않은 테이블, 스토어드 프로 시저, UDF 등과 같은 스키마 오브젝트에 대한 참조를 사용 하면 성능에 영향을 미칩니다. 참조는 항상 스키마에 의해 규정되어야합니다. 이러한 규정되지 않은 참조는 해결되어야하며 다음과 같이 발생합니다.
- 먼저 자격 증명 세션이 설정된 사용자의 기본 스키마 (예 :)에서 이름과 유형이 같은 개체를 찾습니다
jsmith
. 발견되면 해당 인스턴스가 사용됩니다.
- 그렇지 않으면 스키마 아래에서 동일한 이름과 유형의 객체를 찾으십시오
dbo
.
몇 가지 효과가 있습니다.
- 대부분의 경우 참조가 스키마로 규정 된 경우 단일 조회가 아닌 참조를 해결하기 위해 두 개의 조회가 필요합니다.
- 쿼리 / 저장 프로 시저 / 사용자 정의 함수가 바인딩 될 때 얻은 실행 계획은 캐시 및 재사용 될 수 없습니다.
문제가 생겼을 때만 고통스럽게 찾을 수있는 마지막 효과는 다른 사용자가 특정 쿼리 나 저장 프로 시저에서 다른 결과를 얻을 수 있다는 것입니다. 같은 뭔가 select * from foo join bar
DB를 소유자로 나를 위해 5 월 잘 동작; jsmith
실수로 같은 데이터베이스에서 foo
자신의 스키마 ( jsmith.foo
)로 명명 된 테이블을 생성 한 사용자 에게는 손상 될 수 있습니다 .
이러한 이유로, 너무, create
그리고 drop
문 만들거나 끊어지는 개체의 이름을 스키마 자격을해야한다.