[DataBase] VARCHAR와 TEXT 차이

다나·2023년 7월 24일
0

다담다 프로젝트

목록 보기
4/28

PART 1. VARCHAR와 TEXT 차이

아래의 2개 사진은 모두 현재 프로젝트에서 사용하는 SCRAP이라는 테이블의 정보입니다!

여기에서 가장 다른 점은 첫 번째 사진에서 페이지 URL, 제목, 대표 사진 URL, 설명, 사이트명 모두 TEXT 자료형을 가지고 있지만, 두 번째 사진에서는 설명만이 TEXT 자료형임을 알 수 있습니다.

첫 번째 사진은 처음으로 만든 테이블이고, 두 번째 사진은 피드백을 받고 고친 테이블 사진입니다.

이전까지는 VARCHAR와 TEXT의 차이는 단순하게 길이 차이와 명확하게 limit size를 정의할 수 있는지의 여부라고 생각했습니다!

길이가 매우 길 것으로 예상되는 경우에는 TEXT 자료형을 사용하고, 길이가 특정하게 정해져 있고 길지 않은 경우 VARCHAR를 사용하려고 했습니다!!

따라서, 길이가 명확하게 정해지지 않은 페이지 URL, 제목, 대표 사진 URL, 설명, 사이트명의 경우에 VARCHAR로 정의할 수 없다고 생각하여 모두 TEXT로 나타내었습니다.

💡 그러나, 여러 멘토님들에게 피드백을 받으면서 단순하게 길이의 차이가 아니라는 것을 깨달았습니다.

🚨 VARCHAR와 TEXT의 차이가 여러 차이점이 있지만, 가장 큰 차이점은 Index를 할 수 있는가의 여부가였습니다!

즉, VARCHAR는 Index를 할 수 있지만, TEXT는 Index를 할 수 없습니다.


PART 2. DB Indexing의 중요성

인덱스(Index)는 데이터베이스 분야에 있어서 테이블에 대한 동작의 속도를 높여주는 자료 구조를 일컫는다. 인덱스는 테이블 내의 1개의 컬럼, 혹은 여러 개의 컬럼을 이용하여 생성될 수 있다. 고속의 검색 동작뿐만 아니라 레코드 접근과 관련 효율적인 순서 매김 동작에 대한 기초를 제공한다. 인덱스를 저장하는 데 필요한 디스크 공간은 보통 테이블을 저장하는 데 필요한 디스크 공간보다 작다. (왜냐하면 보통 인덱스는 키-필드만 갖고 있고, 테이블의 다른 세부 항목들은 갖고 있지 않기 때문이다.) 관계형 데이터베이스에서는 인덱스는 테이블 부분에 대한 하나의 사본이다.
인덱스는 고유 제약 조건을 실현하기 위해서도 사용된다. 고유 인덱스는 중복된 항목이 등록되는 것을 금지하기 때문에 인덱스의 대상인 테이블에서 고유성이 보장된다.
출처 - 위키백과

즉, 인덱스가 가능한 자료형의 경우에는 검색의 속도가 훨씬 더 빠르다고 할 수 있습니다.

따라서, 검색을 해야 하는 항목이 있는 경우에 VARCHAR와 TEXT 중에서 VARCHAR를 선택하는 것이 훨씬 좋다고 이야기 할 수 있습니다.

그러면 제 프로젝트의 '페이지 URL', '제목', '대표 사진 URL', '설명', '사이트명' 요소 중에서 검색을 해야하는 항목을 나눠보겠습니다.

1) 페이지 URL

  • 현재 프로젝트에서는 저장된 페이지 URL과 새로운 페이지 URL이 중복되는지를 검색하는 과정을 하고 있습니다. 따라서 페이지 URL은 VARCHAR(2083)로 하였습니다.

2) 제목

  • 현재 프로젝트에서는 제목을 통한 검색 기능을 제공할 예정이기 때문에 VARCHAR(100)로 하였습니다.

3) 대표 사진 URL

  • 현재 프로젝트에서는 URL를 VARCHAR(2083)로 하기로 결정하여서 동일한 타입으로 설정하였습니다.

4) 설명

  • 설명의 경우, 검색 기능을 제공하지 않고 길이가 사이트마다 매우 다르고 길 것으로 예상되기 때문에 TEXT를 사용하였습니다.

5) 사이트명

  • 현재 프로젝트에서는 사이트명을 통한 검색 기능 및 정렬 기능을 제공할 예정이기 때문에 VARCHAR(100)으로 설정하였습니다.
profile
컴퓨터공학과 학생이며, 백엔드 개발자입니다🐰

0개의 댓글