СТАТИСТИКА SQL Server

Итак, для этого одного проекта у нас есть куча запросов, которые выполняются на регулярной основе (каждую минуту или около того). Я использовал "Анализ запроса в компоненте базы данных", чтобы проверить их.

Они довольно просты: выберите * from tablex, где обработано = '0'

Существует индекс для обработанного, и каждый запрос должен возвращать < 1000 строк в таблице с записями 1MM.

Анализатор рекомендовал создать некоторую СТАТИСТИКУ на этом.... Так что мой вопрос: какова статистика? действительно ли они помогают производительности? насколько они дороги для таблицы, как указано выше?

Пожалуйста, имейте в виду, что я никоим образом не назвал бы себя опытным пользователем SQL Server... И это первый раз с использованием этого анализатора.

Ответы

Ответ 1

Статистика - это то, что использует SQL Server для определения жизнеспособности получения данных.

Скажем, например, что у вас есть таблица с кластеризованным индексом первичного ключа. Когда вы выполняете SELECT * FROM tablename WHERE col1=value, SQL Server имеет только одну опцию, чтобы проверять каждую строку в таблице, чтобы найти соответствующие строки.

Теперь мы добавляем индекс в col1, поэтому вы предполагаете, что SQL Server будет использовать индекс для поиска совпадающих строк, но это не всегда верно. Скажем, что таблица имеет 200 000 строк, а col1 имеет только 2 значения: 1 и 0. Когда SQL Server использует индекс для поиска данных, индекс содержит указатели обратно в кластерную позицию индекса. Учитывая наличие только двух значений в индексированном столбце, SQL Server решает, что имеет смысл просто сканировать таблицу, потому что использование индекса будет больше работать.

Теперь мы добавим еще 800 000 строк данных в таблицу, но на этот раз значения в col1 широко варьируются. Теперь это полезный индекс, потому что SQL Server может с пользой использовать индекс для ограничения того, что ему нужно, чтобы вытащить из таблицы. Будет ли SQL Server использовать индекс?

Это зависит. И от этого зависит статистика. В какой-то момент времени с установкой AUTO UPDATE STATISTICS сервер обновит статистику для индекса и узнает, что это очень хороший и действительный индекс для использования. Однако до этого момента он будет игнорировать индекс как несущественный.

Это использование статистики. Но есть другое применение, и это не связано с индексами. SQL Server хранит основные статистические данные обо всех столбцах в таблице. Если для его использования достаточно разных данных, SQL Server фактически создаст временный индекс в столбце и будет использовать фильтр для фильтрации. Хотя для этого требуется больше времени, чем при использовании существующего индекса, это занимает меньше времени, чем полное сканирование таблицы.

Иногда вы получите рекомендации по созданию конкретной статистики по столбцам, которые были бы полезны для этого. Это не индексы, но отслеживать статистическую выборку данных в столбце, чтобы SQL Server мог определить, имеет ли смысл создавать временный индекс для возврата данных.

НТН

Ответ 2

В Sql Server 2005 установите автоматическую статистику создания и статистику автоматического обновления. Вам не придется беспокоиться о том, чтобы создавать их или поддерживать их самостоятельно, поскольку база данных обрабатывает это очень хорошо.