2

저녁,MySQL : 인덱스가있는 큰 테이블에서 업데이트 수행

나는 3 천만 개의 행을 가진 크고 간단한 테이블을 가지고 있습니다. 테이블에는 대부분의 열에 대한 인덱스가 있습니다. 그것은 어떤 업데이 트를 수행하는 데 오랜 시간이 걸리면 나는 색인을 삭제하고 테이블에 변경 사항을 마친 후에 다시 작성하는 것이 좋습니다 생각대로 노력하고 있었습니까?

사람들이 대형 테이블에서 색인을 다시 작성할 수없는 곳의 일부 게시물을 읽었 기 때문에 내가 묻는 이유는 묻습니다. 그러나 20 분 안에 2.2GB 텍스트 파일에서이 테이블을 가져올 수있는 이유는 알 수 없습니다.

테이블은 몇 가지 작은 int 및 varchars로 구성됩니다. 그들은 너무 느린하지 않았다

UPDATE census SET rCo = 11470 WHERE rCo = 'Zet'; 

,하지만 난 현재 (4) VARCHAR로 (8)과 매우 복용 VARCHAR에서 필드 중 하나를 변경하고 :처럼 내가 달릴

업데이트 쿼리이었다 장기.

명령 줄에서 업데이트 쿼리를 실행했습니다 (Linux).

+2

업데이트 쿼리를 게시하십시오. 실적이 저조한 쿼리 일 수 있습니다. – Jared

+1

어디에서 업데이트합니까? – Sebas

+0

나는 질의에 det.s와 그 실행 위치를 추가했다. –

답변

2

where 절에서 인덱스를 사용하고 있으므로 인덱스를 유지해야한다고 생각합니다. 한편

, 난 당신이 아니라 새로운 테이블을 구축해야 확실 해요 :

CREATE TABLE census_2 (...) 
SELECT ..., IF(rCo = 'Zet', 11470, rCo) FROM census 

다음은 이전 드롭 + 나중에 새로운 하나의 인덱스를 다시 작성하십시오.

+0

테이블을 업데이트하기 위해 많은 쿼리를 실행해야합니다. FolioViews라는 오래된 15 년 된 데이터 형식에서이 기능을 구축했습니다. 당신이 짐작할 수 있듯이 완전히 엉망입니다> 어쨌든. 내 컴퓨터를 재시작하면 트릭이 완료된 것 같습니다. 데이터 처리 및 데이터 삽입 후 6 시간이 지난 후에 나쁜 장소에 도착 했어야합니다. 시간 내 주셔서 감사합니다. –

+0

당신을 환영합니다! hf. – Sebas

관련 문제