BLOB (및 TEXT)가 실제로 테이블 외부에 저장되는 한, VARCHAR은 테이블에 저장됩니다.
각 레코드가 가변 길이가 될 수 있고 레코드의 필드를 찾는 데 비용이 많이 드는 VARCHAR은 읽기 성능에 좋지 않습니다. 값을 별도로 가져와야하기 때문에 BLOB가 느리고 디스크 나 캐시에서 다른 읽기가 필요할 수 있습니다.
InnoDB는이 점에서 다르게 동작하지 않으므로 성능 특성이 유지된다고 가정합니다.
BLOB 값을 이동하는 것이 실제로 도움이된다고 생각하지 않습니다. 전반적인 테이블 크기를 줄이는 것 외에는 성능에 아무런 영향을 미치지 않습니다. VARCHAR은 다른 이야기입니다. 당신은 확실히 여기에서 이익을 얻을 것입니다. 모든 열의 길이가 정의 된 경우 BLOB를 사용할 수 없다는 것을 의미하는 것으로 추측됩니다. 필드 조회가 빨라집니다.
VARHCAR 및 BLOB 필드를 '읽는'경우이 값을 사용할 수 있습니다. 그러나 선택 쿼리가 VARCHAR 또는 BLOB의 값을 비교해야하는 경우 꽤 시끄 럽습니다.
그렇습니다. 여기서는 성능을 확실히 얻을 수 있지만 실제로 성능을 얻고 있으며 공격적인 비정규 화의 가치가 있다고 테스트했는지 확인하십시오.
추신.
VARCHAR 읽기 성능을 최적화하는 또 다른 방법은 간단히 고정 길이의 CHAR 필드로 대체하는 것입니다. 디스크 공간의 증가가 수용 가능한 한 읽기 성능에 도움이 될 수 있습니다.
BLOB가 거의 쿼리되지 않는 경우 테이블에서 BLOB 열을 마지막으로 유지하도록 제안 할 수 있습니다. 이렇게하면 고정 길이 행 테이블의 레벨에서 성능을 유지할 수 있습니다. –
이 질문은 얼마 전에 나온 것입니다.하지만 받아 들여진 답변은 몇 가지 점에서 잘못되었습니다.자세한 내용은 내 대답을 참조하십시오. –