|
안녕하세요.. 허접 초보가 간단한 쿼리문 하나 질문드리겠습니다.
2개의 테이블이 있습니다.
2개의 테이블을 비교하여 한쪽의 데이타를 인서트 하거나 업데이트 해야 하는 쿼리를 만들어야 하는데, 속도때문에 어찌해야 할지 모르겠습니다. ㅜㅜ
예를 들면 A라는 테이블에 100건의 자료가 있고 B라는 테이블에 10건의 자료가 있습니다.
이 두 테이블은 포린키로 연결되어 있구요..
A 테이블의 레코드 중 5개는 B 테이블의 레코드중 5개 내용으로 업데이트되어야 하고,
B 테이블의 나머지 레코드 5개는 A 테이블에 새로이 인서트 되어야 합니다.
즉, A와 B를 조인했을때 조건에 부합하는 결과가 5개란 이야기죠..
제가 생각한 방법은 다음과 같습니다.
1. 일단 B 테이블을 오픈하여 레코드의 처음부터 끝까지 루프를 돌면서
2. B 테이블의 첫번째 레코드가 A 테이블에 인서트될 레코드인지 검사한다.
3. 인서트되어야 할 레코드라면 A 테이블에 인서트를 하고
4. 그렇지 않다면 A 테이블의 레코드 중 적절한 위치를 찾아 업데이트 한다.
5. B 테이블의 마지막 레코드까지 위 작업을 반복한다.
일단 위와 같이 하면 되긴 됩니다만, 속도가 너무 느립니다.
실제로 처리해야 할 데이타양은 A 테이블이 10만건 정도 됩니다.
속도가 너무 느려서 어떻게 해야 할지 막막합니다.
최적화된 쿼리문 한수 가르쳐 주십시요
|