2010-08-16 3 views
1

그래서 ID 번호를 사용하여 데이터 행별로 작동하는 여러 저장 프로 시저를 작성했습니다. 내 데이터베이스 구성표의 여러 수준에서이 저장 프로 시저를 호출 할 수있는 여러 저장 프로 시저를 유지하고 싶습니다. 예를 들어, 행이 삽입되면이 저장 프로 시저를 호출합니다. 다른 것이 수정되면 각 줄에 대해이 저장 프로 시저를 호출하고 싶습니다. 그래서 다른 곳에서는 호출 할 수있는 기본 코드 세트를 가질 수 있지만 이는 다른 양의 데이터에 대해 작동합니다. Cursor로이 결과를 얻을 수 있었지만, 이것들은 매우 비효율적이라고 들었습니다. 성능을 희생하지 않고 이러한 종류의 기능을 구현하는 다른 방법이 있습니까? 감사.다양한 저장 프로 시저의 성능을 최적화하는 T-SQL 질문

+0

밥, "행동하라"는 말은 무엇을 의미합니까? 그 행동을 감사합니까? 이 절차를 통해 참조 무결성을 업데이트하고 있습니까? –

답변

1

예. 표준 조인을 사용하여 RBAR (Row By Agonizing Row) 대신 집합에서 작업하십시오. 즉, 각 행에 대해 함수를 호출하는 대신 적용 가능한 모든 행에서 필요한 연산을 집합 연산으로 수행하는 조인을 설계하십시오.

종종 devs는 '각 행에서 작동하는 기능'을 사용합니다.이 기능이 논리를 캡슐화하는 확실한 방법 인 것처럼 보이지만 SQL Server 나 대부분의 DB 엔진에서 제대로 작동하지 않습니다.

경우에 따라 테이블 반환 함수를 효과적으로 사용할 수 있습니다 (MS SQL Server).

(BTW, 커서가 비효율적이라고 말하는 것은 맞습니다.)

+0

흠, select 문에서 저장 프로 시저를 호출 할 수 없다고 생각했습니다. ID 번호를 받아서 조인 내에서 호출하는 저장 프로 시저를 어떻게 사용할 수 있습니까? 감사. –

+0

@Bob L : 당신이하지 말라고 제안합니다. –

+0

알 겠어 ... 그래서 기능이나 뭐 그런거야? –