2012-04-26 5 views
0

프런트 엔드 응용 프로그램 (언어는 중요하지 않지만 PHP와 같은)에 매우 간단한 텍스트 상자가 있고 테이블의 설명 열에 삽입됩니다. 아래에 정의 된 데이터베이스의 :이 자주 발생하지는 않지만열이 varchar (데이터베이스) 인 하나의 값에 많은 텍스트 저장

표 (ID [기본 키] 설명 [VARCHAR (255)])

, 시간에 255 개 이상의 문자를 삽입 할 필요가있을 것입니다 하나의 튜플에 대해서. varchar의 길이를 늘릴 수는 있지만 tuple 크기에 대한 제한이 있으므로 권장 최대 값 인 255를 유지하면서 안전하게 재생할 수 있습니다.

이 작업을 수행하는 방법을 알아낼 수있는 유일한 방법은 2 개의 테이블 텍스트를 255 자로 나눕니다. 정의 테이블 :

표 (ID [기본 키] ......)

표 2 (ID, table1ID [표 1 외래 키 설명 * VARCHAR (255)])

더 좋은 방법이 있나요?

편집 : MySQL 버전 5.5.11 텍스트 데이터 형식이 있는지 알지 못했습니다. 아마 새로운 것입니다. 응용 프로그램 개체 유형과 비슷하지만 평균 저장소 크기가 150 자이고 시간의 10 %가 5000 자 정도의 저장소에 충분히 유연합니까?

+0

사용하고있는 MySQL의 버전은 무엇? – eggyal

+0

mysql 'text'데이터 유형을 찾으십니까? – Muneeb

답변

2

MySQL 버전 5.0.3 이상을 사용하는 경우 VARCHAR의 크기를 늘릴 수 있습니다. manual에 따르면 :

VARCHAR의 값은 가변 길이 문자열입니다. 이 길이는 MySQL 5.0.3 이전에는 0에서 255까지, 5.0.3 이후 버전에서는 0에서 65,535 사이의 값으로 지정할 수 있습니다. MySQL 5.0.3 이후의 VARCHAR의 유효 최대 길이는 최대 행 크기 (모든 컬럼에서 공유되는 65,535 바이트)와 사용 된 문자 세트의 영향을받습니다. Section E.7.4, “Table Column-Count and Row-Size Limits”을 참조하십시오.

이 당신이 할 것입니다 수행합니다

ALTER TABLE tablename MODIFY description VARCHAR(...) [NOT] NULL; 

또는 당신이 TEXT 유형 사용할 수 있습니다

ALTER TABLE tablename MODIFY description TEXT [NOT] NULL; 
+0

TEXT는 VARCHAR 65,535와 동일한 한계가 있습니다. – DhruvPathak

+0

@DhruvPathak : 예,하지만 MySQL <5.0.3에서는 유일한 솔루션입니다 (데이터를 분할하지 못함). – eggyal

+0

"MySQL 5.0.3 및 0 ~ 65,535"- 전체 튜플의 0 ~ 65,535 바이트이므로 여전히 3 바이트가 한 문자를 구성하는 제한이 있습니다. –

관련 문제