Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Что такое статистика в SQL?
Статистика в SQL — это метаинформация о распределении данных в таблицах и индексах, которую использует оптимизатор запросов для выбора оптимального плана выполнения. Это один из ключевых механизмов, влияющих на производительность баз данных.
Зачем нужна статистика?
Функции статистики:
- Оптимизация планов выполнения — оптимизатор использует статистику для оценки количества строк, которые вернет каждая операция
- Выбор метода доступа — определяет, использовать ли индекс или полное сканирование таблицы
- Выбор порядка объединения — в JOIN операциях статистика влияет на очередность объединения таблиц
- Оценка стоимости — помогает выбрать наименее дорогостоящий план
Типы статистики
В SQL Server:
- Column statistics — информация о распределении значений в столбце (гистограмма, плотность)
- Index statistics — статистика по индексам
- Statistics objects — пользовательские объекты статистики
Ключевые параметры:
- Гистограмма (Histogram) — показывает распределение значений
- Density — доля дублирующихся значений
- All density — плотность для группы столбцов
Примеры использования
// C# код для работы с статистикой SQL Server
using (SqlConnection conn = new SqlConnection(connectionString))
{
// Создание статистики
SqlCommand cmd = new SqlCommand(
"CREATE STATISTICS stat_UserAge ON Users(Age)", conn);
conn.Open();
cmd.ExecuteNonQuery();
// Обновление статистики
cmd.CommandText = "UPDATE STATISTICS Users WITH FULLSCAN";
cmd.ExecuteNonQuery();
// Просмотр статистики
cmd.CommandText = "DBCC SHOW_STATISTICS(Users, stat_UserAge)";
using (SqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
Console.WriteLine($"Updated: {reader[Updated]}");
}
}
}
Управление статистикой
Основные операции:
- CREATE STATISTICS — создание новой статистики
- UPDATE STATISTICS — обновление существующей статистики (FULLSCAN, SAMPLE)
- DROP STATISTICS — удаление статистики
- DBCC SHOW_STATISTICS — просмотр содержимого статистики
Параметры обновления:
FULLSCAN— сканирование всех строк (медленно, точно)SAMPLE n PERCENT— сканирование процента строкRESAMPLE— использование прежнего метода сканирования
Проблемы с устаревшей статистикой
Последствия:
- Неоптимальные планы выполнения
- Высокая нагрузка на процессор и память
- Медленные запросы
- Блокировки
Решение: регулярное обновление статистики, использование автоматического обновления, настройка threshold для пересчета.
Лучшие практики
- Включай автоматическое обновление статистики (AUTO_UPDATE_STATISTICS)
- Регулярно проверяй актуальность статистики
- Используй FULLSCAN для критических таблиц
- Избегай удаления статистики без необходимости
- Мониторь влияние на производительность