3 개의 테이블에서 1 개의 행 데이터를 가져 오는 것이 모두 가능하다면 COBOL의 임의 읽기를 이길 수 없습니다. 단순히 오버 헤드가 적습니다. SQL은 마술이 아닙니다.
하지만 파일에 쓰는 것을 언급합니다. 따라서 파일에서 100, 1,000 또는 심지어 수백만 행을 가져 와서 새 파일로 출력한다고 가정하십시오.
행별로 작업하는 대신 COBOL의 유일한 옵션이며 SQL을 사용할 때 너무 자주 사용됩니다. 당신은 SQL에서 전체 세트로 작업 할 수 있습니다
insert into newtable
(SELECT TB1.COL1,
TB2.COL4,
TB3.COL5,
TB4.COL6
FROM TB1 JOIN TB2 ON TB1.KEY = TB2.KEY
LEFT OUTER JOIN TB3 ON TB1.KEY = TB3.KEY
LEFT OUTER JOIN TB4 ON TB1.KEY = TB4.KEY)
이제 SQL 솔루션은 훨씬 더 빨라야합니다.
SQL의 핵심은 세트로 생각하는 것입니다. 행마다 (커서를 사용하는) 행을 수행하는 경우에는 항상 잘못된 것이 있습니다 (항상 그런 것은 아닙니다).
COBOL의 기본 I/O에서 SQL로 간단하게 변경할 수 없으며 더 나은 성능을 기대할 수 있습니다. 사실 더 나빠질 것입니다.
마지막으로 출력 파일이 사용되는 대상을 고려하십시오. 데이터를 외부 시스템으로 내보내는 경우 꽤 많이 수행됩니다. 그러나 다른 COBOL 프로그램에 대한 작업 파일을 작성하여 처리하는 경우 ... 더 나은 개선 기회가있을 것입니다. 전체 프로세스를 살펴보고 전체적으로 수행되는 작업과 세트 기반 SQL 솔루션이 수행 할 수있는 작업을 고려하십시오.
환자가 한 가지 이상을 의미한다는 것을 알고 있습니까? TABAC와 TABINS에 데이터가 없다는 것을 TABACC에서 직관 할 수 없다면 JOIN이 더 효율적일 것입니다. 작은 프로그램을 설정하고 테스트하십시오. –
가게에서 우유, 계란, 빵을 가져와야합니다. 가방을 사거나, 상점에 가서 한 번에 세 가지 항목을 모두 얻거나, 한 번만 항목을 검색 할 때 가게를 3 번 따로 방문하는 것이 더 효율적입니까? –