2013-08-17 2 views
2

나는 MySQL 데이터베이스를 가지고 있으며 내 쿼리 성능에 대한 varchar 크기의 결과에 대해 궁금합니다.varchar의 결과는 무엇입니까?

예를 들어 성능이나 데이터베이스 크기면에서 varchar(10)varchar(50)의 차이점은 무엇입니까?

10000 개의 행이 있다면 성능에 많은 영향을 미치 나 중요하지 않습니까?

참고 : 내가 (그 중요한 경우) 어떤

+0

해당 열에서 조인을 수행하지 않으면 방정식에 포함될 수 있습니다. 내 경험에 그 몇 줄 (10,000), 귀하의 varchar의 크기는 작은 영향을 미칠 것입니다. 더 많은 결과를 얻으려면 좋은 지표가 있어야합니다. –

+0

@Tagazok. . . 성능은 문자 위치 11-50이 채워지는지 여부에 달려 있습니다. 데이터가 동일하면 최대 크기 (256 미만의 두 크기)로 성능에 영향을 미치지 않아야합니다. –

답변

4

varchar(10)이 허용되는 최대 바이트 10 varchar(50)가 허용되는 최대 바이트 기본적으로 50 것을 의미 있음을 의미합니다이 칼럼에 가입하지 마십시오 VARCHAR (10)은 varchar (128)와 다른 디스크 방식이 아닙니다. 따라서 열을 선언하는 방식에 관계없이 저장소 끝을 변경하지 않아도됩니다. 그러나 쿼리를 만드는 동안 분명히 차이를 만들 것입니다. source에서

는 : VARCHAR 컬럼에서

값은 가변 길이 문자열입니다. 길이는 이며, MySQL 5.0.3 이전에는 0에서 255, 5.0.3에서는 0에서 65,535 사이의 값으로 지정할 수 있습니다. MySQL 5.0.3 이후의 VARCHAR의 유효 최대 길이는 최대 행 크기 (65,535 바이트, 모든 열에서 공유 됨) 및 문자 이 사용됩니다.

+0

좋아요, 그래서이 열에 조인이 전혀 없다는 것을 고려하면, 짧은 문자열보다는 긴 문자열을 저장하면 공연 기간에 차이가 있습니까? "tsk_put"또는 "task_updated"(알림을 저장하는 테이블)와 같은 것을 저장해야하는지 궁금합니다. 또한, 어떤 시점에서, 그것은 10000 개 이상의 행이 될 것입니다 ... – Olivier

2

VARCHAR(10)VARCHAR(50) 사이의 공연에는 실제 차이가 없어야합니다.

실제 차이는 CHARVARCHAR 사이입니다.

http://dev.mysql.com/doc/refman/5.0/en/char.html

CHAR 컬럼의 길이

은 테이블을 만들 때 를 선언 길이로 고정됩니다. 길이는 0에서 255 사이의 값이 될 수 있습니다. CHAR 값이 저장되면 지정된 길이만큼 공백이 오른쪽으로 채워집니다. CHAR 값을 검색하면 후행 공백은 이 제거됩니다.

VARCHAR 열의 값은 가변 길이 문자열입니다. 길이는 이며, MySQL 5.0.3 이전에는 0에서 255, 5.0.3에서는 0에서 65,535 사이의 값으로 지정할 수 있습니다. MySQL 5.0.3 이후의 VARCHAR의 유효 최대 길이는 최대 행 크기 (65,535 바이트, 모든 열에서 공유 됨) 및 문자 이 사용됩니다. E.7.4 절. "테이블 열 개수 제한 및 행 크기"를 참조하십시오.


따라서,, 그 이후 행이 고정 된 것이다 크기가 성능을 향상시킬 수 CHAR에 의해 모든VARCHAR교체 단편화를 줄이고 어떻게 든 디스크 액세스를 최적화.

당신이 10000 개의 행만있는 경우, 비정상적으로 "긴"행이있는 경우를 제외하고는 실제로 차이가 있는지 의심 스럽습니다.

+0

* VARCHAR (10)과 VARCHAR (50) 사이의 퍼포먼스에는 실제 차이가 있어야합니다. * * Shoudn't that : * : "** 실제적인 차이는 없어야합니다."* –

+0

@PetrR. 물론, 바보 같았습니다 ... 헛소리 ... 오타 ... 이것은 이제 고쳐졌습니다. 고맙습니다 ;) –