Организация индексов в SQL Server 2005 - Установим себе предел

ОГЛАВЛЕНИЕ

 

Установим себе предел

Как я уже упоминала, функция sys.dm_db_index_physical_stats () может возвращать большее количество строк, если пользователь вводит все заданные по умолчанию параметры. Но даже осторожное использование доступных параметров для подмножества таблиц или индексов может вернуть больше, чем требуется, количество данных. Поскольку sys.dm_db_index_physical_stats () — это функция типа TVF, можно накладывать на возвращаемые данные собственные фильтры. Например, пользователь может видеть результаты только для некластеризованных индексов. Пользуясь доступными параметрами, пользователь выбирает, нужно ему видеть все индексы или только один. Если в третьем параметре используется NULL для указания всех индексов, можно добавить фильтр в операторе WHERE для выбора только тех строк, где значение index_id находится между значениями 2 и 250. Или можно просматривать только те строки, которые указывают на высокую степень фрагментации.

Листинг. Проверка идентификаторов базы данных и объекта до вызова функции
DECLARE @db_id smallint;
DECLARE @object_id int;

SET @db_id = DB_ID(N’AdventureWorks’);
SET @object_id = OBJECT_ID(N’AdventureWorks
.Person.Address’);

IF @db_id IS NULL
BEGIN;
PRINT N’Invalid database’;
END;
ELSE IF @object_id IS NULL
BEGIN;
PRINT N’Invalid object’;
END;

SELECT * FROM sys.dm_db_index_physical_stats
(@db_id, @object_id, NULL, NULL, NULL)