2009-09-16 4 views
0

각 테이블의 각 레코드에 대한 별도의 삽입 쿼리보다 여러 테이블에 대해 MySQL에서 삽입을 수행하는 더 효율적인 방법이 있는지 궁금합니다. 나는이 같은 일을 생각하고 있었는데 :MySQL의 다중 테이블에 대한 효율적인 삽입 쿼리

INSERT INTO table1 
    (t1c1, t1c2, t1c3), table2 (t2c1, t2c2, t2c3) 
VALUES 
    ('t1c1', 't1c2', 't1c3', 't2c1', 't2c2', 't2c3'); 

그 이유는 데이터가 원격 시스템에 대조하고, 네트워크를 통해 삽입을하고있을 것입니다.

+0

나는 그 이유를 알지 못한다. MySQL은 여전히 ​​그 작업을 위해 두 개의 다른 테이블을 필요로 할 것이다. 방대한 양의 데이터를 삽입하는 경우 가장 좋은 방법은 압축 된 CSV 파일을 서버로 보내고 'LOAD DATA'를 사용하여 엄청난 속도로 테이블에 삽입하는 것입니다. –

+0

좋아, 내가 알기는하지만 네트워크를 통해 파일을 전송 한 다음 LOAD DATA를 전송하는 문제는 여전히있다. 삽입 쿼리를 사용하는 것이 더 효율적이지 않습니까? – aHunter

+0

쿼리는 어쨌든 데이터를 전송하므로 어떤 경우에도 파일 내용이 네트워크를 통해 이동합니다. – soulmerge

답변

1

아니, 하나의 단계에서이 일을 방법이 없습니다. 여러 개의 쿼리를 수행해야합니다.

+0

뷰를 사용하여 테이블을 연결 한 다음 뷰에 삽입 할 수 없습니까? – aHunter

+0

불행히도 이것조차 가능하지 않습니다. 나는 아주 오랫동안이 기능을 직접 찾아 보았습니다 :/ – soulmerge

+0

어쨌든 문제가 없습니다. – aHunter

0

당신은 다음 첫 번째 테이블에서 두 번째로, 첫 번째 테이블에 삽입 할 수 :

INSERT INTO table1 .... 
VALUES(.... 

INSERT INTO table2(.... 
SELECT ... 
FROM table1 
WHERE .... 
+1

이것은 테이블 간의 데이터 중복을 의미하지 않습니까? 원격 시스템의 프로그램이 데이터베이스가 아니며 두 테이블 모두 원격 데이터베이스 서버에 있습니다. – aHunter

관련 문제