다 대일 관계가있는 두 개의 테이블이 있습니다. (Oracle)sql이 하위 및 상위 테이블에 삽입
**Table: PARENT**
Field: A (PK)
Field: B
Field: C1
Field: C2
Field: C3
Field: C4
Field: C5
**Table CHILD**
Field: A (PK) (FK to PARENT.A)
Field: D (PK)
Field: E
동시에 삽입되는 레코드와 부모 테이블이 동시에 삽입됩니다.
제가 궁금해하는 점은 이것을 수행하는 가장 효율적인 방법입니다.
현재이 전체 삽입 단계에 대해 호출 응용 프로그램에서 호출하는 저장 프로 시저가 하나 있습니다. 저장 프로 시저에는 현재 다음과 같은 서명이 있습니다.
Field: A
Field: B
Field: C (dilimited string)
Field: D (dilimited string)
Field: E (dilimited string)
이 절차는 입력에서 C를 반복하고 각 값을 배열에 저장합니다. 그런 다음 해당 배열을 입력에서 A와 B와 함께 사용하여 PARENT 테이블에 삽입합니다.
입력에서 A를 사용하고 입력에서 D와 E를 반복하고 희석 된 문자열의 각 항목에 대해 CHILD 테이블에 삽입합니다.
이것은 하루에 최대 3 백만 번 호출됩니다. 가능한 한 효율적이어야합니다.
하나가 아닌 여러 SP 호출을 할 때 얼마나 많은 효율성이 손실됩니까?
뚜렷한 문자열을 처리하는 데 필요한 모든 루핑 작업이 많은 것처럼 보입니다!
호출 응용 프로그램이 각 항목에 대해 별도의 SP 호출을 만들 수 있다고 생각했습니다. 그러나, 어떻게 든 어린이 삽입물이 부모에게 삽입되기 전에 어떻게 될지를 어떻게 보장 할 수 있습니까? 그리고 그것은 더 많은 저장 프로 시저 호출이 될 것입니다. (가 10보다 일반적으로 더 적은있다, 그러나이 될 수있을 때 여러 번 삽입 할 자식 레코드가없는만큼 50)
나는 또한 개방 dilimted 문자열의 정보 C.
을 얻을 수있는 또 다른 방법으로희박한 문자열에서 정보를 얻으려면 while 루프보다 더 좋은 점이 있습니까?
나는 SP를 쓰지 않았다. 나는 작은 수정을하고 가능한 한 더 효율적으로 만들 것을 요청 받았다.
아이디어가 있으십니까?
참고 :
나는 테이블을 단순화 dilitied 문자열에서 10 개 항목이 실제로있다 (C)하지 오, 테이블 부모에 삽입 얻으려면, C와 같은 두 개 더 dilited 문자열도 있습니다. 테이블에는 표시된 것보다 몇 개의 필드가 있습니다.레코드는 30 일 후에 삭제됩니다. 비슷한 열 유사한 항목을 넣어 구분 된 문자열을 통해 반복하는 경우
나중에, 나는이 모든 것을 끝내기 위해서 – kralco626