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
'source' 카테고리의 다른 글
특정 속성을 가진 요소를 포함한다고 단언하려면 어떻게 해야 합니다. (0) | 2022.09.20 |
---|---|
xampp MySQL이 시작되지 않음 (0) | 2022.09.20 |
null일 때 빈 문자열 가져오기 (0) | 2022.09.20 |
MySQL에서 인쇄문을 시뮬레이트하려면 어떻게 해야 합니까? (0) | 2022.09.20 |
Python에서는 어떻게 이 긴 줄을 끊을 수 있을까요? (0) | 2022.09.20 |