삽질의 현장/- DataBase

[삽잡이::sql] 테이블을 복사 그리고, Index의 중요성

shovelman 2016. 6. 24. 00:00


똑같은 데이터를 가지고 테스트할 일이 있어서

테이블을 복사하고자 시도했었습니다.


(그냥 dump로 복사할껄...)


1
CREATE TABLE NEW_테이블명 AS SELECT * FROM OLD_테이블명
cs


select 문 안에 들어있는 테이블의 데이터를 복사하여

새로운 테이블에 붙여넣을 수 있습니다.


참고로 구조만 복사할 경우에는 LIKE 를 사용하시면 됩니다.

이렇게요~!


1
CREATE TABLE NEW_테이블명 LIKE OLD_테이블명
cs


간단하지 않습니까?


뭐야 쉽네~ 별거 없네~ 


그런데 이렇게 복사한 테이블을 사용하여

테스트를 진행했을 때에는

엄청난 혼란만 키웠을 뿐입니다.


예... 쿼리가... 너무 오랫동안 실행하고 있어서....

찾아봤더니!!!!


기존에 Index를 탔었는데,

이 복사한 Table에서는 Index를 안타고있는것 아니겠습니까!?


어쩐지 느리더라!!!! 


다시한번 느끼지만, Index는 정말로 중요합니다.

속도가 달라집니다... 어마무시하게 말이죠...


Index된 컬럼을 통해 검색을 진행하게 되면, 

정말 원하는 결과를 보다 빠르게 찾을 수 있게 됩니다.



흠... 이렇게 테이블을 복사하면 

기존에 설정해둔 Index 설정까지는 복사가 안되나봅니다...

확실한건 아닌데요.... 

저는 안타지더라구요...


그래서! Index를 생성했습니다.


기존에는 Table을 생성할 때


1
2
3
...
INDEX index명(컬럼명)
UNIQUE INDEX Index명(컬럼명)
cs

이런식으로 만들었는데.....


이미 데이터를 복사하며 Table 구조까지 만들다보니...

Index를 직접 만들었어야했습니다.


그리하여!


1
CREATE INDEX index명 ON table명 (컬럼명 ... )
cs


이와 같이 때려붙였습니다.


물론!



1
ALTER TABLR table명 ADD INDEX index명 (컬럼명 ...)
cs


이런식으로도 가능합니다.



마지막으로 Index가 타는지 보기 위해서는!


1
SHOW INDEX FROM table명
cs

이와 같이 진행하시면 됩니다.


빠르고 빠르게!!

그리고 정확하게!!!


Query를 날려봅시다~


굳~