source

mysql에서 테이블을 복사하는 가장 빠른 방법?

goodcode 2022. 9. 20. 23:59
반응형

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은 이러한 문을 어떻게 실행합니까?

PS.는 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;

(댓글에 지적된 바와 같이)

매뉴얼:

"테이블 작성...SELECT는 자동으로 인덱스를 생성하지 않습니다.이는 의도적으로 발언을 최대한 유연하게 하기 위한 것입니다.작성된 테이블에 인덱스를 포함할 경우 SELECT 문 앞에 인덱스를 지정해야 합니다.

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

에서 인덱스와 데이터 유형을 지정할 수 있습니다(데이터 유형 변환을 피하기 위해).CREATE TABLE LIKE그리고.CREATE 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;

를 사용하여 변수를 중개자로 사용합니다.

먼저 소스 테이블과 동일한 구조를 가지려면 수신 테이블을 작성해야 합니다.

가장 좋은 점은 내부라서 빠르다는 거예요.하지만 인덱스는 손실됩니다.

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

반응형