똑같은 데이터를 가지고 테스트할 일이 있어서
테이블을 복사하고자 시도했었습니다.
(그냥 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를 날려봅시다~
굳~
'삽질의 현장 > - DataBase' 카테고리의 다른 글
[삽잡이::sql] 중복을 제거하라! DISTINCT (0) | 2016.06.28 |
---|---|
[삽잡이::sql] NULL이라면? 다른 녀석을 보여주지! IFNULL (0) | 2016.06.27 |
[삽잡이::sql] 다 삭제해버리겠다! DROP, DELETE, TRUNCATE TABLE (0) | 2016.06.22 |
[삽잡이::DB] 중복을 없애고 테이블을 최소화하라! 정규화(normalization) (0) | 2016.06.21 |
[삽잡이::DB] 데이터 모델링 과정 (0) | 2016.06.20 |