ANALYZE в Oracle SQL — как собирать статистику и улучшать план выполнения запросов

🟢 ANALYZE в Oracle SQL. Введение

ANALYZE в Oracle SQL используется для сбора статистики по таблицам, индексам и другим объектам. Эти данные помогают оптимизатору Oracle выбирать наиболее эффективный план выполнения запроса.

Хотя ANALYZE считается устаревшим способом (вместо него рекомендуется DBMS_STATS), он до сих пор поддерживается и используется в некоторых проектах, особенно для ручной отладки или миграций.


🔤 Написание

ANALYZE TABLE имя_таблицы COMPUTE STATISTICS;

или

ANALYZE INDEX имя_индекса VALIDATE STRUCTURE;

🔄 Где используется

  • Для сбора статистики таблиц и индексов

  • Для оценки количества строк, блоков, кластеров

  • Для диагностики повреждений и проверки целостности структуры

  • В устаревших проектах, где не используется DBMS_STATS

  • В миграциях, отладке и аудите


🧪 10 Примеров использования ANALYZE

1️⃣ Сбор статистики по таблице

ANALYZE TABLE employees COMPUTE STATISTICS;

Позволяет оптимизатору более точно строить план запроса.


2️⃣ Сбор статистики по индексу

ANALYZE INDEX emp_idx COMPUTE STATISTICS;

Оценивает распределение данных в индексе.


3️⃣ Сбор статистики по кластеру

ANALYZE CLUSTER emp_dept_cluster COMPUTE STATISTICS;

Для кластеризованных таблиц.


4️⃣ Удаление статистики

ANALYZE TABLE employees DELETE STATISTICS;

Полезно, если статистика некорректна.


5️⃣ Проверка структуры таблицы

ANALYZE TABLE employees VALIDATE STRUCTURE;

Проверка на повреждения.


6️⃣ Включение опции CASCADE

ANALYZE TABLE employees COMPUTE STATISTICS FOR ALL INDEXES;

Сбор статистики сразу и для таблицы, и для всех её индексов.


7️⃣ Оценка статистики (без вычисления)

ANALYZE TABLE employees ESTIMATE STATISTICS SAMPLE 20 PERCENT;

Быстрая оценка без полного перебора.


8️⃣ Статистика для одного столбца

ANALYZE TABLE employees COMPUTE STATISTICS FOR COLUMNS salary;

Анализ конкретного столбца.


9️⃣ Оценка с SAMPLE ROWS

ANALYZE TABLE employees ESTIMATE STATISTICS SAMPLE 1000 ROWS;

Ещё один способ ускорить анализ.


🔟 Совмещение с PL/SQL

BEGIN
EXECUTE IMMEDIATE 'ANALYZE TABLE employees COMPUTE STATISTICS';
END;

Динамический вызов в процедурном коде.


🧩 Заключение

Хотя ANALYZE считается устаревшим, он остаётся полезным инструментом для быстрой диагностики и сбора статистики. Для большинства новых проектов рекомендуется использовать DBMS_STATS, но ANALYZE отлично подходит для:

  • Быстрой ручной работы

  • Отладки

  • Старых систем

💡 Не забудь:

  • ANALYZE — прост, но не гибок

  • Не умеет сохранять историю, как DBMS_STATS

  • Всё ещё используется в EXPLAIN PLAN и проверке целостности


🔜 Следующая статья:

ADD в Oracle SQL — как добавлять столбцы, ограничения и элементы в таблицу


 

Понравилась статья? Поделиться с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии