CHAR и VARCHAR - это типы данных для хранения символьных строк в реляционных базах данных SQL.
Основное различие заключается в способе хранения и использования пространства:
CHAR(n):
n.n, оставшееся пространство заполняется пробелами.n байт памяти, независимо от фактической длины строки.VARCHAR(n):
n.CHAR, если длины строк сильно различаются или часто короче максимальной.Пример таблицы для сравнения:
| Характеристика | CHAR(10) | VARCHAR(10) |
|---|---|---|
| Тип длины | Фиксированная | Переменная |
| Использование памяти | 10 байт (плюс возможные метаданные) | Фактическая длина строки + 1-2 байта |
| Хранение "hello" | "hello " (заполняется пробелами) | "hello" (хранится фактическая длина 5) |
| Хранение "helloworld" | "helloworld" | "helloworld" |
| Заполнение пробелами | Да, при чтении часто обрезаются | Нет |
| Производительность | Теоретически немного быстрее для записи/чтения | Может быть немного медленнее из-за переменной длины |
| Лучшее применение | Данные с фиксированной и известной длиной | Данные с переменной длиной |