your programing

mysql에서 테이블을 복사하는 가장 빠른 방법은 무엇입니까?

lovepro 2020. 10. 5. 20:32
반응형

mysql에서 테이블을 복사하는 가장 빠른 방법은 무엇입니까?


MySQL에서 테이블을 복사하고 싶습니다. 가장 빠른 방법은 무엇입니까? 이렇게?

CREATE TABLE copy LIKE original;
INSERT INTO copy SELECT * FROM original;

또는

CREATE TABLE copy SELECT * FROM original;
ALTER TABLE copy ADD PRIMARY KEY (id);

아니면 다른 방법이 있습니까?

편집 : 인덱스가 다시 생성되는 것이 걱정됩니다. mysql은 이러한 명령문을 어떻게 실행합니까?

추신. mysqldump와 같은 명령 줄 도구를 사용할 수 없으며 즉시 사용해야합니다.


이렇게하면 테이블 구조가 즉시 복사되지만 데이터는 복사되지 않습니다.

CREATE TABLE copy LIKE original;

이렇게하면 original테이블에있는 모든 인덱스가 생성됩니다 .

mysql에서 이런 식으로 작동합니다 5.1.39.


인덱스보존 하면서 MyISAM 테이블을 사용하는 가장 빠른 방법 은 다음과 같습니다.

CREATE TABLE copy LIKE original;
ALTER TABLE copy DISABLE KEYS;
INSERT INTO copy SELECT * FROM original;
ALTER TABLE copy ENABLE KEYS;

데이터베이스로드에 대해 키를 비활성화 한 다음 마지막에 키를 다시 생성하려고합니다.

마찬가지로 InnoDB의 경우 :

SET unique_checks=0; SET foreign_key_checks=0; 
..insert sql code here..
SET unique_checks=1; SET foreign_key_checks=1;

(댓글에서 지적했듯이.)


로부터 수동 :

"CREATE TABLE ... SELECT는 자동으로 인덱스를 생성하지 않습니다. 이는 명령문을 최대한 유연하게 만들기 위해 의도적으로 수행됩니다. 생성 된 테이블에 인덱스를 포함하려면 SELECT 문 앞에 다음을 지정해야합니다."

CREATE TABLE bar (UNIQUE (n)) SELECT n FROM foo;

당신은 모두에 인덱스 및 데이터 유형 (데이터 타입 변환을 피하기 위해)를 지정할 수 있습니다 CREATE TABLE LIKECREATE TABLE SELECT. 어느 것이 더 빠른지 설정에 따라 다릅니다.


인덱스 및 트리거를 사용하여 복사하려면 다음 두 쿼리를 수행하십시오.

CREATE TABLE newtable LIKE oldtable; 
INSERT newtable SELECT * FROM oldtable;

구조와 데이터 만 복사하려면 다음을 사용하십시오.

CREATE TABLE tbl_new AS SELECT * FROM tbl_old;

create table mynewtable (select * from myoldtable)mysql 에서 작동 합니까 ? 그렇다면 당신도 시도 할 수 있습니다.


구조와 모든 항목을 한 테이블에서 다른 테이블로 복사하는 가장 좋은 방법은 다음 쿼리입니다.

CREATE TABLE new_table LIKE old_table; INSERT new_table SELECT * FROM old_table;


을 시도 SELECT INTO하고 변수 를 중개자로 사용 하십시오 .

먼저 원본 테이블과 동일한 구조를 갖도록 수신 테이블을 만들어야합니다.

가장 좋은 점은 내부이기 때문에 빠르다는 것입니다. 그래도 색인을 잃게됩니다.


MyISAM을 사용하는 경우 개별 파일을 복사하고 이름을 바꿀 수도 있습니다. 백엔드의 .MYD, .MYI, .FRM 파일


아마도 당신은 SHOW CREATE TABLE.

취해야 할 단계 :

  • phpmyadmin으로 이동

  • SQL로 이동

이 쿼리 실행

SHOW CREATE TABLE `the_old_table`;
  • 옵션을 클릭하십시오. "전체 텍스트"를 선택하고 이동을 누르십시오.

결과는 전체 CREATE TABLE 문입니다. 만족할 때까지 쿼리를 편집하십시오.

리소스 : http://dev.mysql.com/doc/refman/5.7/en/show-create-table.html


CREATE TABLE copy SELECT * FROM original;

빠른 방법이지만 인덱스의 가장 빠른 원인은 아닐 수 있습니다.

참고 URL : https://stackoverflow.com/questions/2943400/fastest-way-to-copy-a-table-in-mysql

반응형