Разница между VARCHAR и TEXT в MySQL

GuDron

dumpz.ws
Admin
Регистрация
28 Янв 2020
Сообщения
7,722
Реакции
1,447
Credits
25,053
Разница между VARCHAR и TEXT в MySQL
Фронт.jpg
MySQL имеет много типов данных для хранения строковых данных в таблице. VARCHAR и TEXT — два из них. Оба могут хранить максимум 65535 символов, но между этими типами данных, описанными в этом руководстве, есть некоторые различия.

MySQL имеет много типов данных для хранения строковых данных в таблице. VARCHAR и TEXT — два из них. Оба могут хранить максимум 65535 символов, но между этими типами данных, описанными в этом руководстве, есть некоторые различия.

VARCHAR против TEXT:

Существует много различий между типами данных VARCHAR и TEXT. Различия между этими типами данных описаны ниже.

Особенности VARCHAR и TEXT

Типы данных VARCHAR и TEXT по-разному хранят данные в таблице базы данных. Различные особенности этих типов данных описаны ниже.

5cdaa5949f2f0c13d6186.png

Декларация VARCHAR и TEXT

Способы объявления типов данных VARCHAR и TEXT объясняются ниже путем создания двух таблиц с полем типов данных VARCHAR и TEXT. Длина требуется для определения типа данных VARCHAR, а длина не требуется для определения типа данных TEXT.

Выполните следующую инструкцию CREATE DATABASE, чтобы создать базу данных с именем test_db.
Код:
CREATE DATABASE test_db;

Запустите следующую инструкцию запроса, чтобы выбрать базу данных test_db перед созданием таблицы.
Код:
USE test_db;

Выполните следующую инструкцию CREATE TABLE, чтобы создать таблицу клиентов, содержащую пять полей. Здесь тип данных поля id — целое число, а тип данных полей name, email, address и contact_no — varchar, содержащий значение длины.

Код:
CREATETABLE customers(
id INTNOT NULL PRIMARY KEY,
name VARCHAR(30) NOT NULL,
email VARCHAR(50),
address VARCHAR(300),
contact_no VARCHAR(15));

Выполните следующую инструкцию DESCRIBE, чтобы проверить структуру таблицы клиентов.
Код:
DESCRIBE customers;

Выполните следующий запрос INSERT, чтобы вставить три записи в таблицу клиентов.

Код:
INSERT INTO `customers` (`id`, `name`, `email`, `address`, `contact_no`) VALUES ('01', 'Andrey Ex', '[email protected]', '25, aaaaaaaaaaaaaa, Bangladesh ', '0191275634'),
       ('02', 'Sasha Destroyer', '[email protected]', 'bbbbbbbbbbbbbbbbbb', '01855342357'),
       ('03', 'Masha Bubba', '[email protected]', 'cccccccccccccc', NULL);

Запустите следующую инструкцию SELECT, чтобы прочитать все записи таблицы клиентов.
Код:
SELECT * FROM customers;

Запустите следующую инструкцию CREATE TABLE, чтобы создать таблицу сотрудников, содержащую пять полей. Тип данных поля id — целое число. Тип данных полей name, email и contact_no — varchar. Тип данных адресного поля — текст. Здесь для поля адреса не объявлено значение длины из-за текстового типа данных.

Код:
CREATETABLE employees(
id INTNOT NULL PRIMARY KEY,
name VARCHAR(30) NOT NULL,
email VARCHAR(50),
address TEXT,
contact_no VARCHAR(15));

Выполните следующую инструкцию DESCRIBE, чтобы проверить структуру таблицы сотрудников.
Код:
DESCRIBE employees;

Выполните следующий запрос INSERT, чтобы вставить три записи с одинаковым содержимым таблицы клиентов в таблицу сотрудников.
Код:
INSERT INTO `employees` (`id`, `name`, `email`, `address`, `contact_no`) VALUES ('01', 'Andrey Ex', '[email protected]', 'aaaaaaaaaaaaaaaaaaaaaaa', '0191275634'),
       ('02', 'Sasha Destroyer', '[email protected]', 'bbbbbbbbbbbbbbbbbbbbbb', '01855342357'),
       ('03', 'Masha Bubba', '[email protected]', 'ccccccccccccccccccc', NULL);

Выполните следующую инструкцию SELECT, чтобы прочитать все записи таблицы сотрудников.
Код:
SELECT * FROM employees;

Производительность VARCHAR и TEXT

Ранее уже упоминалось, что тип данных TEXT работает быстрее, чем тип данных VARCHAR. Вы должны выбрать базу данных, содержащую таблицы с полем типа данных VARCHAR и TEXT, и включить профилирование текущего сеанса MySQL, чтобы проверить, какой тип данных быстрее между VARCHAR и TEXT.

База данных была выбрана здесь во время создания таблицы. Таким образом, нам не нужно выбирать его снова. Выполните следующую инструкцию SET, чтобы включить профилирование SESSION.
Код:
SET SESSION profiling = 1;

Выполните следующий запрос SELECT, чтобы прочитать все записи таблицы клиентов.
Код:
SELECT * FROM customers;

Выполните следующий запрос SELECT, чтобы прочитать все записи таблицы сотрудников.
Код:
SELECT * FROM employees;

Выполните следующую команду, чтобы проверить производительность двух предыдущих запросов SELECT.
Код:
SHOW PROFILES;

Следующий вывод появится после выполнения команды SHOW PROFILES. Согласно выходным данным, запрос SELECT для таблицы клиентов содержит поле адреса типа данных VARCHAR, требуемое 0,00101000 секунд, а запрос SELECT для таблицы сотрудников, содержащей поле адреса типа данных TEXT, требует 0,00078125 секунд. Это доказывает, что тип данных TEXT работает быстрее, чем тип данных 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 выбрать правильный тип данных поля таблицы во время создания таблицы.