Что такое статистика в SQL?

«Что такое статистика в SQL?» — вопрос из категории Базы данных, который задают на 25% собеседований C# Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Статистика в 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) имеют фоновые процессы автоматического обновления статистики, в высоконагруженных системах или после массовых изменений данных часто требуется ручное управление и мониторинг.