다음 코드를 업데이트하여 열을 추가 및 삭제하지 않으려면 어떻게해야합니까?MySQL :이 코드를 재구성하여 중간 열을 추가 및 삭제하는 방법
이 코드는 "3 야드"(이름 "길이")와 같은 값을 가진 열의 숫자 열 ("LengthFloat")에 대한 값을 계산합니다.
alter table sometable add Value float;
alter table sometable add Units varchar(15);
Update sometable
set Value = SUBSTRING_INDEX(SUBSTRING_INDEX(Length, ' ', 1), ' ', -1),
Units = SUBSTRING_INDEX(SUBSTRING_INDEX(Length, ' ', 2), ' ', -1);
update sometable
set LengthFloat = case Units
when 'yards' then Value*3
when 'yard' then Value*3
when 'feet' then Value
when 'foot' then Value
end;
alter table sometable drop column Value;
alter table sometable drop column Units;
테이블 업데이트를 업데이트하려고 할 때 오류가 발생합니다. –
기본 테이블과 뷰 (무작위'unit's에서'value'를 합성하는 뷰)와 select (일관된'feet'을 합성하는)는 모두'id'를 제공합니다. 업데이트 할 때 선택 항목 'ON ID'로 기본 테이블을 조인하면됩니다. 더 나은, 피트 또는 미터와 같은 합리적인 기둥을 유지하십시오 (헛간이 아니라 면적 측정 용). 따라서 미친 중간 결과를 종합 할 필요가 없습니다. 그것을 새롭고 영구적 인 컬럼으로 만들거나 JOIN 할 수있는 부속 테이블에 넣으십시오. –
나는 일하기 위해 합류했다. 어떤 이유로 이것은 매우 느리게 실행됩니다. 그것은 끝내지 않았고 그래서 나는 그것을 죽 였고, 그리고 나서 처음 1,000 개의 행만 달렸습니다. 그것은 65 초 걸렸다 (!!!). 작업 관리자를 살펴보면,이 시간 동안 CPU는 28 % (거의 모든 것이 mysql)이고, 메모리 사용량은 44 %이며, 디스크 사용량은 0 %에서 4 % 사이이며 일반적으로 0 %입니다. 나는 이미 자신의 우스운 값을 대체하기 위해 my.cfg를 최적화했기 때문에 12GB 램이 더 잘 활용된다. –