저장 프로시저 내에서 상위 및 하위 테이블을 효율적으로 채우기
이 문서에서는 데이터 입력을 위해 사용자 정의 테이블 유형(UDT)을 활용하여 저장 프로시저 내의 상위 및 하위 테이블에 데이터를 효율적으로 삽입하기 위한 솔루션을 간략하게 설명합니다. 이 접근 방식은 데이터 무결성을 유지하고 행별 작업과 관련된 성능 병목 현상을 방지하는 문제를 해결합니다.
과제: 데이터 무결성 및 성능
문제는 UDT의 데이터를 저장 프로시저 내 여러 관련 테이블(상위 테이블 및 관련 하위 테이블)에 정확하게 매핑하는 것입니다. 단순한 행 단위 삽입은 특히 대규모 데이터 세트를 처리할 때 비효율적이며 오류가 발생하기 쉽습니다.
해결책: 다단계 접근 방식
이 솔루션은 효율성과 데이터 무결성을 모두 보장하기 위해 다단계 프로세스를 사용합니다.
UDT 확장: UDT에 임시 ID 열(temp_id
)을 추가합니다. 이는 UDT 내의 각 행에 대한 고유 식별자 역할을 하며 삽입 프로세스 전반에 걸쳐 데이터를 추적하는 데 중요합니다.
상위 테이블 삽입을 위해 MERGE
사용: MERGE
문은 상위 테이블(@MainEmployee
)에 데이터를 효율적으로 삽입합니다. 중요한 점은 OUTPUT
절이 임시 ID(UDT의 temp_id
)와 상위 테이블에서 새로 생성된 EmployeeID
를 모두 캡처한다는 것입니다.
매핑 테이블 생성: OUTPUT
문의 MERGE
데이터는 임시 매핑 테이블(@EmployeeidMap
)을 채웁니다. 이 테이블은 임시 temp_id
를 상위 테이블에서 생성된 실제 EmployeeID
에 연결합니다.
ID 매핑을 통한 상위 테이블 채우기: 그런 다음 @EmployeeidMap
테이블을 사용하여 UDT 데이터를 상위 테이블(@ParentEmployeeDepartment
)과 조인하여 각 상위에 올바른 EmployeeID
이 할당되도록 합니다. 기록합니다.
하위 테이블 채우기: 마지막으로 @ChildEmployeeDepartmentTypeA
및 @ChildEmployeeDepartmentTypeB
테이블 모두와의 조인을 사용하여 하위 테이블(@EmployeeidMap
, @ParentEmployeeDepartment
)을 채웁니다. 이는 상위 및 하위 기록 간에 필요한 관계를 설정합니다.
예시 코드 예:
다음 코드는 이러한 향상된 접근 방식을 보여줍니다.
<code class="language-sql">CREATE TYPE dbo.tEmployeeData AS TABLE ( FirstName NVARCHAR(50), LastName NVARCHAR(50), DepartmentType NVARCHAR(10), DepartmentBuilding NVARCHAR(50), DepartmentEmployeeLevel NVARCHAR(10), DepartmentTypeAMetadata NVARCHAR(100), DepartmentTypeBMetadata NVARCHAR(100), temp_id INT IDENTITY(1,1) -- Added temporary ID column ) GO CREATE PROC dbo.EmployeeImport (@tEmployeeData dbo.tEmployeeData READONLY) AS BEGIN -- ... (Temporary table declarations remain the same as in the original example) ... -- MERGE into @MainEmployee table MERGE INTO @MainEmployee USING @tEmployeeData AS sourceData ON 1 = 0 WHEN NOT MATCHED THEN INSERT (FirstName, LastName) VALUES (sourceData.FirstName, sourceData.LastName) OUTPUT sourceData.temp_id, inserted.EmployeeID INTO @EmployeeidMap; -- ... (Remaining INSERT statements adjusted to use @EmployeeidMap for joining) ... END GO</code>
이 세련된 전략은 효율적이고 정확한 데이터 삽입을 보장하여 상위 테이블과 하위 테이블 간의 참조 무결성을 유지하면서 잠재적으로 큰 데이터 세트를 효과적으로 처리합니다.
위 내용은 저장 프로시저에서 사용자 정의 테이블 유형을 사용하여 부모 및 자식 테이블에 데이터를 효율적으로 삽입하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!