MySQL에서 VARCHAR와 TEXT의 차이점

MySQL에서 VARCHAR와 TEXT의 차이점

2022-06-03 last update

5 minutes reading MySQL MariaDB
MySQL에는 테이블에 문자열 데이터를 저장하는 데 사용되는 많은 데이터 유형이 있습니다.VARCHAR와 TEXT는 둘 중 하나입니다.두 문자는 최대 65535자까지 저장할 수 있지만 이 강좌에서 소개한 데이터 유형 사이에는 약간의 차이가 있다.

VARCHAR 및 텍스트:


VARCHAR와 TEXT 데이터 유형 사이에는 여러 가지 유형의 차이가 있습니다.이러한 데이터 유형 간의 차이는 다음과 같다.

VARCHAR 및 TEXT 기능


VARCHAR 및 TEXT 데이터 유형은 데이터베이스 테이블에 서로 다른 방식으로 데이터를 저장합니다.이러한 데이터 유형의 서로 다른 특징은 다음과 같다.
와차르
텍스트
이것은 주로 비교적 작은 문자열 데이터를 저장하는 데 쓰인다.
이것은 주로 비교적 큰 문자열 데이터를 저장하는 데 쓰인다.
이것은 가변 길이의 문자열 데이터를 저장하는 데 사용됩니다.
고정 길이의 문자열 데이터를 저장하는 데 사용됩니다.
문자열의 최대 길이를 정의할 수 있습니다.
문자열의 길이를 정의할 수 없습니다.
이 데이터 형식에 색인을 적용할 수 없습니다.
인덱스는 이 데이터 형식에 적용될 수 있습니다.
길이 값이 255자보다 작거나 같으면 길이가 +1바이트 공간을 차지하고, 길이가 256자보다 크거나 같으면 길이가 +2바이트 공간을 차지한다.
그것의 길이는 +2바이트의 디스크 공간이다.
그것의 작업 속도는 비교적 느리다.
그것은 더욱 빨리 일한다.

VARCHAR 선언 및 텍스트


다음은 VARCHAR와 TEXT 데이터 형식 필드를 포함하는 두 개의 표를 만들어서 VARCHAR와 TEXT 데이터 형식을 설명하는 방법입니다.이 강좌의 앞부분에서 언급한 바와 같이 VARCHAR 데이터 형식을 정의하는 데는 길이가 필요하지만 텍스트 데이터 형식을 정의하는 데는 길이가 필요하지 않습니다.
다음 CREATE DATABASE 문구를 실행하여test\udb라는 데이터베이스를 만듭니다.
CREATE DATABASE test_db;
테이블을 만들기 전에 다음 검색 문장을 실행하여test\udb 데이터베이스를 선택하십시오.
USE test_db;
다음 CREATE TABLE 문장을 실행하여 다섯 개의 필드를 포함하는customer 테이블을 만듭니다.여기서 id 필드의 데이터 형식은 정수입니다.name,email,address,contact\u no 필드의 데이터 형식은 길이 값을 포함하는varchar입니다.
CREATETABLE customers(
id INTNOT NULL PRIMARY KEY,
name VARCHAR(30) NOT NULL,
email VARCHAR(50),
address VARCHAR(300),
contact_no VARCHAR(15));
다음 설명문을 실행하여customers표의 구조를 검사합니다.
DESCRIBE customers;

상기 문장을 실행하면 다음과 같은 출력이 나타납니다.
다음 INSERT 질의를 실행하여 세 레코드를customers 테이블에 삽입합니다.
INSERT INTO `customers` (`id`, `name`, `email`, `address`, `contact_no`) VALUES ('01', 'Nibir Hasan', '[email protected]', '32, Justice SM Morshed Sharany\r\nAgargoan Sher-e-Bangla Nagar\r\nDhaka-1207, Bangladesh ', '0191275634'),
('02', 'Akash Chowdhury', '[email protected]', 'house # 25b, road # 1, dhanmondi r/a,Dhaka-1205, Bangladesh', '01855342357'),
('03', 'Babor Ali', '[email protected]', 'north bhasantek(north side of cmh), p.s. # kafrul, dhaka cantonment, 1206, Bangladesh', NULL);
다음 SELECT 문구를 실행하여customers 테이블의 모든 기록을 읽습니다.
SELECT * FROM customers;
상기 문장을 실행하면 다음과 같은 출력이 나타납니다.

다음 CREATE TABLE 문구를 실행하여 다섯 필드를 포함하는 EMPLOYEMENTS 테이블을 만듭니다.id 필드의 데이터 형식은 정수입니다.name, email, contact\u no 필드의 데이터 형식은 varchar입니다.주소 필드의 데이터 형식은 텍스트입니다.여기에는 텍스트 데이터 형식 때문에 주소 필드에 길이 값을 표시하지 않았습니다.
CREATETABLE employees(
id INTNOT NULL PRIMARY KEY,
name VARCHAR(30) NOT NULL,
email VARCHAR(50),
address TEXT,
contact_no VARCHAR(15));
다음 설명문을 실행하여employees표의 구조를 검사합니다.
DESCRIBE employees;
상기 문장을 실행하면 다음과 같은 출력이 나타납니다.

다음 INSERT 조회를 실행하여customers표와 같은 내용을 가진 세 개의 기록을 employees표에 삽입합니다.
INSERT INTO `employees` (`id`, `name`, `email`, `address`, `contact_no`) VALUES ('01', 'Nibir Hasan', '[email protected]', '32, Justice SM Morshed Sharany\r\nAgargoan Sher-e-Bangla Nagar\r\nDhaka-1207, Bangladesh ', '0191275634'),
('02', 'Akash Chowdhury', '[email protected]', 'house # 25b, road # 1, dhanmondi r/a,Dhaka-1205, Bangladesh', '01855342357'),
('03', 'Babor Ali', '[email protected]', 'north bhasantek(north side of cmh), p.s. # kafrul, dhaka cantonment, 1206, Bangladesh', NULL);
다음 SELECT 문구를 실행하여 employees 테이블의 모든 기록을 읽습니다.
SELECT * FROM employees;
상기 문장을 실행하면 다음과 같은 출력이 나타납니다.

VARCHAR 및 TEXT의 성능


앞에서 언급한 바와 같이 TEXT 데이터 유형은 VARCHAR 데이터 유형보다 작업 속도가 빠릅니다.VARCHAR 및 TEXT 데이터 유형 필드가 있는 테이블을 포함하는 데이터베이스를 선택하고 현재 MySQL 세션의 분석을 활성화하여 VARCHAR 및 TEXT 간 데이터 유형이 더 빠른지 확인해야 합니다.
테이블을 만들 때 데이터베이스를 선택했습니다.따라서 우리는 다시 그것을 선택할 필요가 없다.다음 SET 문을 실행하여 세션 분석을 활성화합니다.
SET SESSION profiling = 1;
다음 SELECT 조회를 실행하여customers 테이블의 모든 기록을 읽습니다.
SELECT * FROM customers;
다음 SELECT 조회를 실행하여 employees 테이블의 모든 기록을 읽습니다.
SELECT * FROM employees;
다음 명령을 실행하여 수행된 두 SELECT 쿼리의 성능을 확인합니다.
SHOW PROFILES;
SHOW PROFILES 명령을 실행하면 다음 출력이 표시됩니다.출력에 따라customers표의 SELECT 조회는 VARCHAR 데이터 형식의 주소 필드를 포함하는데 0.0001000초,employees표의 SELECT 조회는 텍스트 데이터 형식의 주소 필드를 포함하는데 0.00078125초가 필요합니다.이것은 같은 데이터에 대해 텍스트 데이터 형식의 작업 속도가 VARCHAR 데이터 형식보다 빠르다는 것을 증명한다.

다음 두 쿼리의 출력을 비교하여 VARCHAR 및 TEXT 데이터 유형의 성능을 자세히 확인할 수 있습니다.
SELECT * FROM INFORMATION_SCHEMA.PROFILING WHERE QUERY_ID=1;

SELECT * FROM INFORMATION_SCHEMA.PROFILING WHERE QUERY_ID=2;

결론:


VARCHAR 및 TEXT 데이터 유형은 MySQL 데이터베이스에서 테이블을 만드는 데 매우 중요합니다.이 강좌는 예시를 통해 이러한 데이터 형식 간의 차이를 적절하게 설명하여 MySQL 사용자가 테이블을 만들 때 테이블 필드의 정확한 데이터 형식을 선택하도록 도와줍니다.