ANALYZE в MySQL. Введение
ANALYZE в MySQL (команда ANALYZE TABLE) обновляет статистику таблиц и индексов, которую оптимизатор использует для выбора плана выполнения. В MySQL 8.0 также можно управлять гистограммами селективности столбцов через UPDATE HISTOGRAM и DROP HISTOGRAM. Команда поддерживает анализ конкретных партиций и вариант NO_WRITE_TO_BINLOG/LOCAL для реплик.
Ниже — синтаксис и 100 уникальных примеров из разных доменов (OLTP, аналитика, e‑commerce, IoT, логи, партиции, репликация).
Синтаксис
ANALYZE TABLE tbl;ANALYZE NO_WRITE_TO_BINLOG TABLE tbl; -- синоним: ANALYZE LOCAL TABLEANALYZE TABLE tbl PARTITION (p2025_08, p2025_09);ANALYZE TABLE tbl UPDATE HISTOGRAM ON col1, col2 WITH 64 BUCKETS;ANALYZE TABLE tbl DROP HISTOGRAM ON col1, col2;Типовая конструкция
ANALYZE TABLE orders;
ANALYZE TABLE orders UPDATE HISTOGRAM ON status, country WITH 32 BUCKETS;100 примеров
1. Анализ таблицы orders для актуализации статистики
ANALYZE TABLE orders;2. Анализ таблицы order_items для актуализации статистики
ANALYZE TABLE order_items;3. Анализ таблицы users для актуализации статистики
ANALYZE TABLE users;4. Анализ таблицы profiles для актуализации статистики
ANALYZE TABLE profiles;5. Анализ таблицы products для актуализации статистики
ANALYZE TABLE products;6. Анализ таблицы categories для актуализации статистики
ANALYZE TABLE categories;7. Анализ таблицы payments для актуализации статистики
ANALYZE TABLE payments;8. Анализ таблицы invoices для актуализации статистики
ANALYZE TABLE invoices;9. Анализ таблицы refunds для актуализации статистики
ANALYZE TABLE refunds;10. Анализ таблицы coupons для актуализации статистики
ANALYZE TABLE coupons;11. Анализ таблицы logs для актуализации статистики
ANALYZE TABLE logs;12. Анализ таблицы audit для актуализации статистики
ANALYZE TABLE audit;13. Анализ таблицы sessions для актуализации статистики
ANALYZE TABLE sessions;14. Анализ таблицы carts для актуализации статистики
ANALYZE TABLE carts;15. Анализ таблицы cart_items для актуализации статистики
ANALYZE TABLE cart_items;16. Анализ таблицы events для актуализации статистики
ANALYZE TABLE events;17. Анализ таблицы notifications для актуализации статистики
ANALYZE TABLE notifications;18. Анализ таблицы messages для актуализации статистики
ANALYZE TABLE messages;19. Анализ таблицы comments для актуализации статистики
ANALYZE TABLE comments;20. Анализ таблицы attachments для актуализации статистики
ANALYZE TABLE attachments;21. Анализ таблицы warehouses для актуализации статистики
ANALYZE TABLE warehouses;22. Анализ таблицы stock для актуализации статистики
ANALYZE TABLE stock;23. Анализ таблицы deliveries для актуализации статистики
ANALYZE TABLE deliveries;24. Анализ таблицы returns для актуализации статистики
ANALYZE TABLE returns;25. Анализ таблицы tickets для актуализации статистики
ANALYZE TABLE tickets;26. Анализ таблицы chats для актуализации статистики
ANALYZE TABLE chats;27. Анализ таблицы reviews для актуализации статистики
ANALYZE TABLE reviews;28. Анализ таблицы ratings для актуализации статистики
ANALYZE TABLE ratings;29. Анализ таблицы subscriptions для актуализации статистики
ANALYZE TABLE subscriptions;30. Анализ таблицы licenses для актуализации статистики
ANALYZE TABLE licenses;Ещё примеры
31. Анализ партиций августа и сентября в sales
ANALYZE TABLE sales PARTITION (p2025_08, p2025_09);32. Анализ свежей партиции событий
ANALYZE TABLE events PARTITION (p_current);33. Анализ партиций по регионам
ANALYZE TABLE geo_data PARTITION (eu, us, apac);34. Анализ недельных партиций логов
ANALYZE TABLE logs PARTITION (w2025_35, w2025_36, w2025_37);35. Анализ архивных партиций заказов
ANALYZE TABLE orders PARTITION (p2024, p2023);36. Анализ партиций мониторинга
ANALYZE TABLE metrics PARTITION (m2025_08, m2025_09);37. Анализ партиций склада
ANALYZE TABLE stock PARTITION (wh_a, wh_b);38. Анализ партиций трекинга устройств
ANALYZE TABLE device_track PARTITION (d2025_09_01, d2025_09_02);39. Анализ партиций платежей по валютам
ANALYZE TABLE payments PARTITION (usd, eur, gbp);40. Анализ партиций посещаемости по дням
ANALYZE TABLE visits PARTITION (day_2025_09_15, day_2025_09_16);41. Анализ партиций ретеншна
ANALYZE TABLE retention PARTITION (cohort_2025_07, cohort_2025_08);42. Анализ партиций очереди задач
ANALYZE TABLE queue PARTITION (prio_high, prio_low);43. Анализ партиций ошибок IoT
ANALYZE TABLE iot_errors PARTITION (sensor_a, sensor_b, sensor_c);44. Анализ партиций подписок по планам
ANALYZE TABLE subscriptions PARTITION (basic, pro, enterprise);45. Анализ партиций контента по языкам
ANALYZE TABLE posts PARTITION (ru, en, de);Ещё примеры
46. Гистограммы по статусу и стране в orders
ANALYZE TABLE orders UPDATE HISTOGRAM ON status, country WITH 64 BUCKETS;47. Удалить гистограммы по status в orders
ANALYZE TABLE orders DROP HISTOGRAM ON status;48. Гистограмма по цене в products (256 бакетов)
ANALYZE TABLE products UPDATE HISTOGRAM ON price WITH 256 BUCKETS;49. Гистограммы для категорий и брендов
ANALYZE TABLE products UPDATE HISTOGRAM ON category_id, brand_id WITH 32 BUCKETS;50. Удалить гистограммы по brand_id
ANALYZE TABLE products DROP HISTOGRAM ON brand_id;51. Гистограмма по discount в coupons
ANALYZE TABLE coupons UPDATE HISTOGRAM ON discount WITH 64 BUCKETS;52. Гистограмма по размеру корзины
ANALYZE TABLE carts UPDATE HISTOGRAM ON items_count WITH 32 BUCKETS;53. Гистограмма по сумме платежей
ANALYZE TABLE payments UPDATE HISTOGRAM ON amount WITH 128 BUCKETS;54. Удаление гистограмм по amount
ANALYZE TABLE payments DROP HISTOGRAM ON amount;55. Гистограммы по каналам и кампаниям
ANALYZE TABLE marketing UPDATE HISTOGRAM ON channel, campaign WITH 64 BUCKETS;56. Гистограмма по времени ответа API
ANALYZE TABLE api_metrics UPDATE HISTOGRAM ON latency_ms WITH 128 BUCKETS;57. Гистограмма по размеру файла в uploads
ANALYZE TABLE uploads UPDATE HISTOGRAM ON size_bytes WITH 256 BUCKETS;58. Удаление гистограмм по size_bytes
ANALYZE TABLE uploads DROP HISTOGRAM ON size_bytes;59. Гистограмма по возрасту пользователей
ANALYZE TABLE users UPDATE HISTOGRAM ON age WITH 64 BUCKETS;60. Гистограмма по количеству позиций в заказах
ANALYZE TABLE order_items UPDATE HISTOGRAM ON qty WITH 64 BUCKETS;61. Гистограмма по дням доставки
ANALYZE TABLE deliveries UPDATE HISTOGRAM ON days_to_deliver WITH 32 BUCKETS;62. Гистограмма по оценке отзывов
ANALYZE TABLE reviews UPDATE HISTOGRAM ON rating WITH 16 BUCKETS;63. Гистограмма по размеру сообщения в чатах
ANALYZE TABLE chat_msgs UPDATE HISTOGRAM ON text_len WITH 64 BUCKETS;64. Гистограммы по активности в сессиях
ANALYZE TABLE sessions UPDATE HISTOGRAM ON pages, duration_sec WITH 64 BUCKETS;65. Удаление гистограмм по duration_sec
ANALYZE TABLE sessions DROP HISTOGRAM ON duration_sec;Ещё примеры
66. ANALYZE на реплике без записи в binlog (orders)
ANALYZE NO_WRITE_TO_BINLOG TABLE orders;67. ANALYZE LOCAL для products
ANALYZE LOCAL TABLE products;68. ANALYZE LOCAL для крупной таблицы logs
ANALYZE LOCAL TABLE logs;69. ANALYZE LOCAL для статей
ANALYZE LOCAL TABLE posts;70. ANALYZE LOCAL для витрины mart_daily
ANALYZE LOCAL TABLE mart_daily;71. ANALYZE LOCAL для geo_points
ANALYZE LOCAL TABLE geo_points;72. ANALYZE LOCAL для очереди задач
ANALYZE LOCAL TABLE queue;73. ANALYZE LOCAL для сессий
ANALYZE LOCAL TABLE sessions;74. ANALYZE LOCAL для событий
ANALYZE LOCAL TABLE events;75. ANALYZE LOCAL для кеша
ANALYZE LOCAL TABLE cache;76. ANALYZE LOCAL для инвойсов
ANALYZE LOCAL TABLE invoices;77. ANALYZE LOCAL для платежей
ANALYZE LOCAL TABLE payments;78. ANALYZE LOCAL для профилей
ANALYZE LOCAL TABLE profiles;79. ANALYZE LOCAL для чатов
ANALYZE LOCAL TABLE chats;80. ANALYZE LOCAL для тикетов
ANALYZE LOCAL TABLE tickets;Ещё примеры
81. Пакетный анализ нескольких таблиц (админ-скрипт)
ANALYZE TABLE users, orders, payments, products;82. ANALYZE в расписании EVENT (еженедельно)
CREATE EVENT ev_weekly_analyze ON SCHEDULE EVERY 1 WEEK DO
ANALYZE TABLE orders, order_items;83. ANALYZE в EVENT для логов (ежедневно)
CREATE EVENT ev_daily_logs_analyze ON SCHEDULE EVERY 1 DAY DO
ANALYZE TABLE logs;84. ANALYZE после массовой загрузки (процедура)
CREATE PROCEDURE after_bulk_load()
BEGIN
ANALYZE TABLE stage_users;
ANALYZE TABLE users;
END;85. ANALYZE партиций в EVENT с параметрами
CREATE EVENT ev_monthly_sales_analyze ON SCHEDULE EVERY 1 MONTH DO
ANALYZE TABLE sales PARTITION (p_current);86. ANALYZE в миграции после ALTER
ALTER TABLE products ADD INDEX ix_price (price);
ANALYZE TABLE products;87. Автоматический ANALYZE витрины
CREATE EVENT ev_mart_analyze ON SCHEDULE EVERY 12 HOUR DO
ANALYZE TABLE mart_daily;88. ANALYZE после импорта CSV
LOAD DATA INFILE '/import/products.csv' INTO TABLE products FIELDS TERMINATED BY ',';
ANALYZE TABLE products;89. ANALYZE геоданных после массовой вставки
INSERT INTO geo_points(geom) VALUES (ST_GeomFromText('POINT(0 0)'));
ANALYZE TABLE geo_points;90. ANALYZE очереди после purge
DELETE FROM queue WHERE finished=1 AND finished_at<CURDATE()-INTERVAL 7 DAY;
ANALYZE TABLE queue;Ещё примеры
91. ANALYZE таблицы конфигураций с JSON
ANALYZE TABLE cfg;92. ANALYZE витрины отчётности
ANALYZE TABLE mart_orders;93. ANALYZE агрегатов по дням
ANALYZE TABLE agg_daily;94. ANALYZE реестра миграций
ANALYZE TABLE migrations;95. ANALYZE витрины активных клиентов
ANALYZE TABLE v_active_customers;96. ANALYZE очереди восстановления
ANALYZE TABLE recovery_queue;97. ANALYZE истории логинов
ANALYZE TABLE logins;98. ANALYZE архива заказов
ANALYZE TABLE orders_archive;99. ANALYZE таблицы аудита
ANALYZE TABLE audit;100. ANALYZE справочника валют
ANALYZE TABLE currencies;Заключение
ANALYZE помогает оптимизатору точнее оценивать селективность и стоимость планов. Регулярно выполняйте его на активно меняющихся таблицах (особенно после массовых загрузок/удалений), а для MySQL 8.0 используйте гистограммы для неселективных индексов и колонок с неравномерным распределением.
Подробнее — в официальной документации MySQL.