큰 느린 dataloading 쿼리의 성능을 향상 (죄송합니다 전에이 글을 쓰는하지 않는)내가 Oracle에서 SQL Server로 데이터를로드하기 위해 노력하고있어
나는 (실제로는 다른 테이블의 데이터가있는보기) 테이블이 있습니다 1 백만 레코드 이상. 내가 비즈니스 로직을위한 함수를 가지고 있고 select 쿼리에서 직접 호출하는 방식으로 패키지를 디자인했습니다.
예 :
X1(id varchar2)
x2(id varchar2, d1 date)
x3(id varchar2, d2 date)
Select id, x, y, z, decode (.....), x1(id), x2(id), x3(id)
FROM Table1
참고 : 내 테이블 (20) 열이 나는이어야 6-7 열에서 5 개 개의 다른 함수를 호출. 그리고 일부 기능은 감사 테이블에 전달 된 매개 변수를 비교하고 논리를 수행 난 내 쿼리의 성능을 향상 시키거나 거기에 내가 C# 코드 만의 초기 선택에서 그 일을 시도이
을 할 수있는 더 좋은 방법입니다 수있는 방법
레코드가 데이터 집합에 충분할만큼 커야하고 예외적 인 예외가 발생합니다.
내 기능 선택을 수행 한 후, 예를 들어 논리를 수행
Function(c_x2, eid)
Select col1
into p_x1
from tableP
where eid = eid;
IF (p_x1 = NULL) THEN
ret_var := 'INITIAL';
ELSIF (p_x1 = 'L') AND (c_x2 = 'A') THEN
ret_var:= 'RL';
INSERT INTO Audit
(old_val, new_val, audit_event, id, pname)
VALUES
(p_x1, c_x2, 'RL', eid, 'PackageProcName');
ELSIF (p_x1 = 'A') AND (c_x2 = 'L') THEN
ret_var := 'GL';
INSERT INTO Audit
(old_val, new_val, audit_event, id, pname)
VALUES
(p_x1, c_x2, 'GL', eid, 'PackgProcName');
END IF;
RETURN ret_var;
1,000,000 개의 모든 레코드에 대해 이러한 함수를 실행 하시겠습니까? 네, 실행하는 데 약간의 시간이 걸릴 것입니다. 확실히 밀리 초가 아닙니다. 당신의 기대는 무엇입니까? – Guy
나는 밀리 세컨드를 원한다고 말한 적이 없으며, 1 시간 동안 실행 중이다. 그래서 성능을 향상시키고 싶다. (말하자면 ...) 나는 눈 깜짝 할 순간에 끝내기를 원한다. 쓸데없는 것 같아. –
내 것을 보아라. 최신 답변 편집 –