Ответ
Статистика в SQL — это метаданные, которые СУБД собирает о распределении данных в таблицах и индексах. Эти данные критически важны для оптимизатора запросов, который использует их для выбора наиболее эффективного плана выполнения (например, какой индекс использовать или какой тип соединения применить).
Основные виды статистики:
- Гистограммы: Показывают, как часто встречаются различные значения в столбце. Помогают оценить селективность условий
WHERE. - Плотность: Вероятность встретить конкретное значение. Обратно пропорциональна кардинальности.
- Кардинальность: Оценка количества уникальных значений в столбце или комбинации столбцов.
Практическое управление: Статистика может устаревать после больших операций вставки, обновления или удаления данных, что приводит к выбору неоптимальных планов и падению производительности.
-- SQL Server: обновить статистику для таблицы с полным сканированием
UPDATE STATISTICS Sales.Orders WITH FULLSCAN;
-- SQL Server: создать статистику по нескольким столбцам
CREATE STATISTICS stats_OrderDate_CustomerID ON Sales.Orders (OrderDate, CustomerID);
-- PostgreSQL: обновить статистику с помощью ANALYZE
ANALYZE orders;
Важно: Хотя современные СУБД (SQL Server, PostgreSQL) имеют фоновые процессы автоматического обновления статистики, в высоконагруженных системах или после массовых изменений данных часто требуется ручное управление и мониторинг.