2011-04-25 6 views
1

나는 액션 A를 수행하기 위해 테이블에서 25 개의 컬럼을 선택하는 기존의 저장된 proc를 가지고있다. 나는 테이블에서 3 개의 컬럼 만 필요로하는 또 다른 액션 B를 작성하고있다. 내가 필요로하는 3 개의 컬럼 중 하나의 컬럼 만 인덱스에 있습니다. 따라서 세 개의 열을 가져 오는 또 다른 쿼리가있는 경우 Action A와 Action B 사이의 쿼리 실행 시간에 큰 차이가 없을 것이라고 생각합니다 (잘못된 경우 수정하십시오). 하지만 액션 A에서 사용하는 것과 동일한 sproc을 재사용하면 네트워크를 통해 전송되는 데이터 패킷의 크기가 걱정됩니다. 액션 B에 필요한 열을 검색하기 위해 다른 저장된 proc를 작성해야합니까?네트워크를 통해 전송 된 열 수가 중요합니까?

답변

2

예!

분명히 관련된 열의 크기, 절차의 호출 빈도 및 네트워크의 속도를 모른 채 네트워크 문제 자체가 얼마나 중요한지 말할 수는 없지만 불필요한 열 (또는 행)을 클라이언트에 반환합니다. (Interesting blog post on this issue)

이렇게하면 3 열의 쿼리가 미래의 좁은 범위의 인덱스를 잠재적으로 사용하여 쿼리의 IO 요구 사항을 줄일 수 있습니다.

필요한 열만 선택하면 실제 작업 부하 요구 사항에 따라 누락 된 색인 DMV 및 DTA와 같은 도구를 사용하여 적절한 권장 사항을 만들 수 있으며 데이터를 줄이는 것처럼 쿼리 요구 사항을 줄일 수 있습니다 (특히 당신은 계획에 어떤 종류가있다)

관련 문제