2014-10-20 6 views
0

데이터베이스에 이미 테이블이 채워져 있습니다. 이제이 테이블에 저장하려는 추가 데이터가 있지만이 데이터는 하나의 추가 필드 (아마도 VARCHAR (40))를 저장해야합니다. 마지막으로 원하는 것은이 공간을 사용하지 않을 기존 엔트리에 할당하는 것입니다. 이 필드가 NULL로 설정되었거나이 여분의 데이터 필드를 포함하는 데이터에 대해 새 테이블을 만드는 것이 더 나을 경우 MySQL의 테이블 크기를 크게 늘리지 않기에 어떻게 든 '똑똑한'MySQL입니까?대부분의 행에 대해 비어있는 테이블에 열을 추가하십시오.

+3

VARCHAR가 똑똑 고려할 수 있습니다. – Nico

답변

1

사용중인 스토리지 엔진에 따라 다릅니다. 기본값 인 InDB 스토리지 엔진은 열의 값이 대부분 NULL 인 경우 성능을 향상시킵니다.

이노에서, 각각의 열은 열 당 하나 또는 두 바이트 행 헤더에"오프셋 필드 시작"을 가지고 있기 때문에. 열이 NULL이면 해당 필드 시작 오프셋의 상위 비트가 켜집니다. 이 경우 열을 전혀 저장할 필요가 없습니다. 따라서 많은 NULL이 있다면 저장소를 상당히 줄여야합니다.

참조 :
SO Answer
Example for null value performance efficiency

주 : MS SQL에서 동일하게 구현하려면 당신은 SPARSE

+0

링크를 제공해 주셔서 감사합니다. – Lieuwe

관련 문제