2

절차에서 많은 if-else 조건을 사용하여 열의 값을 결정해야합니다. 이 스크립트는 LOOP는오라클 절차에서 if-else가 너무 많음, 성능에 좋음 또는 나쁨?

을 시작 녹화 IN (SELECT ...)에 대

시작하여 녹화 하위 기록이 각 반복에서 얻을 수있는 많은 다른 값을 결정한다. 경우에 따라 2 ~ 3 개의 변수 할당이있을 수 있으며 일부 경우에는 별도의 프로 시저 실행 또는 INSERT 작업이 포함될 수 있습니다.

루프의 SELECT 문의 결과로 많은 레코드가있는 성능면에서 의사 결정을위한 최선의 방법에 접근합니까? 아니면 더 나은 대안이있을 수 있습니까? 이 절차를 작성할 때 Chain of Responsibility 패턴을 적용하면 어떨까요? 이 방법으로 성능이 향상되거나 더 악화 될 수 있습니까?

감사합니다.

답변

3

가능한 경우 SQL 내부에 있습니다. 더 큰 볼륨의 경우 PL/SQL 측에서 직렬화 될 때 "if"를 피하십시오. 가능한 경우 SELECT 내부에서 CASE로 사용하는 것이 좋습니다. 예를 들어 SQL 병렬화의 경우 동시에 여러 행에 대해 여러 프로세스에서 처리 할 수 ​​있습니다. 그것이 도움이

희망, 이고르 SQL에 머물

+0

+1 좋은 충고 – DCookie