Для чего нужен тип данных SMALLINT в базах данных?

«Для чего нужен тип данных SMALLINT в базах данных?» — вопрос из категории Базы данных, который задают на 24% собеседований PHP Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

SMALLINT — это целочисленный тип данных SQL, который используется для оптимизации хранения, когда диапазон возможных значений заранее известен и ограничен.

Ключевые характеристики:

  • Размер: Обычно занимает 2 байта (16 бит).
  • Диапазон значений:
    • SIGNED (со знаком): от -32 768 до 32 767
    • UNSIGNED (без знака): от 0 до 65 535

Практическое применение:

  • Статусы и коды: Коды HTTP-статусов, внутренние статусы заказа (1-создан, 2-оплачен, 3-доставлен).
  • Небольшие числовые атрибуты: Возраст человека, рейтинг по 10-балльной шкале, количество товаров в небольшой корзине.
  • Флаги и перечисления с числовым представлением.

Пример:

CREATE TABLE orders (
    id INT PRIMARY KEY,
    -- Статус заказа: 1-новый, 2-в обработке, 3-выполнен, 4-отменен
    status_code SMALLINT UNSIGNED NOT NULL DEFAULT 1,
    -- Приоритет заказа от 1 (низкий) до 5 (критический)
    priority SMALLINT UNSIGNED NOT NULL DEFAULT 3,
    CHECK (priority BETWEEN 1 AND 5)
);

Преимущество: Использование SMALLINT вместо INT (4 байта) экономит место на диске и в оперативной памяти, а также может ускорить обработку запросов, особенно при работе с большими таблицами и индексами.