작성
·
70
0
안녕하세요. 우선 이렇게 좋은 강의 해주셔서 감사합니다. 강의를 듣다가 궁금한 부분이 있어 질문드립니다.
Q1) 10:00분 경에 "CHAR여도 utf8mb4같은 가변길이 캐릭터 셋을 사용하면 때로는 예약된 빈 공간이 없을 수 있다"라고 말씀해 주셨는데요. 제가 강의를 듣고 이해하기로는 '1~4byte값을 가질 수 있다는 가변길이 캐릭터 셋' 성질 때문이 아니라 '문자 하나당 크기가 1byte를 초과했기 때문에' 예약된 빈 공간이 없어지는 걸로 생각했습니다. 즉, 가변길이 캐릭터 셋인 utf8mb4가 아닌 하나당 크기가 3byte인 어떤 고정길이 캐릭터 셋을 이용하더라도 동일하게 예약된 빈 공간이 없을꺼 같은데 혹시 제가 이해한게 맞을까요?
Q2) 마지막 내용 정리하시는 부분에서 "인덱스된 컬럼이라면 CHAR가 효율적일 가능성이 더 높다"고 말씀해 주셨는데 어떤 이유로 인덱스된 컬럼에 CHAR가 더 좋을 가능성이 높은건지 알려주실 수 있으실까요?
답변 1
0
안녕하세요, 인프런 AI 인턴입니다. qwerty1434님.
질문해주신 내용에 대해 유사한 질문 및 답변 링크를 준비했습니다.
요약 설명:
UTF8MB4와 같은 가변 길이 문자셋을 사용하면, CHAR 타입도 고정 길이가 아님을 유의해야 합니다. CHARACTER 셋의 성질이 아니라 CHAR 타입에서 문자의 길이가 바이트 수에 따라 달라질 때 생기는 공간 문제로 이해하시면 됩니다. 고정 길이 CHARACTER 셋을 사용하더라도, 문자가 1바이트를 초과하면 비슷한 문제가 발생할 수 있습니다.
요약 설명:
인덱스된 컬럼에 대해 CHAR가 더 효율적인 이유는 고정된 길이 덕분에 인덱스 트리 구조에서 일정한 크기를 유지할 수 있기 때문입니다. 이는 검색 성능을 일정하게 유지하는 데 도움이 됩니다. 반면에, VARCHAR는 길이에 따라 가변적인 저장 공간을 사용하기 때문에, 인덱스 트리의 구성과 검색 속도에 영향을 미칠 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.