← Назад к вопросам

Что такое ANALYZE в SQL?

1.7 Middle🔥 171 комментариев
#Базы данных и SQL

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI29 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Что такое ANALYZE в SQL

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

Назначение ANALYZE

Основная цель ANALYZE — обновить статистику, которая помогает оптимизатору принимать правильные решения:

  • Расчёт кардинальности — количество строк в таблице, количество различных значений в колонке
  • Распределение значений — понимание того, насколько равномерно распределены значения
  • Оценка селективности — как много строк будет отфильтровано WHERE условием
  • Выбор индекса — решение о том, использовать ли индекс или полное сканирование

Синтаксис

ANALYZE;
ANALYZE TABLE_NAME;
ANALYZE TABLE table1, table2, table3;

Как работает

При выполнении ANALYZE оптимизатор:

  1. Сканирует таблицу и собирает информацию о распределении значений
  2. Сохраняет статистику в системных таблицах (например, pg_statistic в PostgreSQL, mysql.innodb_table_stats в MySQL)
  3. На основе этой информации строит гистограммы для часто используемых колонок
  4. Эта информация используется при планировании запросов

Когда использовать ANALYZE

  • После массовой вставки данных — когда добавлено значительное количество новых строк
  • После удаления большого объёма данных — для актуализации статистики
  • Когда запросы работают медленнее — признак устаревшей статистики
  • Перед критичными операциями — убедиться в оптимальных планах выполнения
  • По расписанию — регулярное обновление в фоне (например, ночью)

Различия между БД

PostgreSQL: команда ANALYZE обновляет статистику, может быть выполнена параллельно с другими операциями

MySQL: команда ANALYZE TABLE на InnoDB обновляет индексную статистику

SQL Server: используется UPDATE STATISTICS для аналогичной цели

Практический пример

-- Собрать статистику по всем таблицам
ANALYZE;

-- Собрать статистику по конкретной таблице
ANALYZE TABLE users;

-- Несколько таблиц одновременно
ANALYZE TABLE users, orders, products;

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

ANALYZE может занять значительное время для больших таблиц, поскольку она должна прочитать данные. Однако это инвестиция в будущую производительность запросов. Обычно выполняется в периоды низкой нагрузки.

Заключение

ANALYZE — критически важная команда для поддержания оптимальной производительности базы данных. Без актуальной статистики оптимизатор может выбрать неправильный план выполнения, что приведёт к медленным запросам. Это одна из основных операций администрирования БД.

Что такое ANALYZE в SQL? | PrepBro