Поделиться через


$PARTITION (Transact-SQL)

Возвращает номер секции, с которой будет сопоставлен набор значений столбцов секционирования для любой указанной функции секционирования.

Значок ссылки на разделСоглашения о синтаксисе в Transact-SQL

Синтаксис

                [ database_name. ] $PARTITION.partition_function_name(expression)

Аргументы

  • database_name
    Имя базы данных, которая содержит функцию секционирования.

  • partition_function_name
    Имя существующей функции секционирования, которая применяется к набору значений столбцов секционирования.

  • expression
    Аргумент expression, тип данных которого должен совпадать или иметь возможность неявного преобразования к типу данных соответствующего столбца секционирования. Аргумент expression является также именем столбца секционирования, который передается в функцию partition_function_name.

Типы возвращаемых данных

int

Замечания

$PARTITION возвращает значение типа int между 1 и числом секций функции секционирования.

$PARTITION возвращает номер секции для любого допустимого значения вне зависимости от того, существует ли данное значение в секционированной таблице или индексе, который пользуется функцией секционирования.

Примеры

A. Получение номера секции для набора значений столбцов секционирования

Следующий пример создает функцию секционирования RangePF1 для разделения таблицы или индекса на четыре секции. $PARTITION используется для определения того, что значение 10, представляющее столбец секционирования RangePF1, попадет в секцию 1 таблицы.

USE AdventureWorks2008R2 ;
GO
CREATE PARTITION FUNCTION RangePF1 ( int )
AS RANGE FOR VALUES (10, 100, 1000) ;
GO
SELECT $PARTITION.RangePF1 (10) ;
GO

Б. Получение количества строк в каждой непустой секции секционированной таблицы или представления

Следующий пример иллюстрирует получение числа строк в каждой секции таблицы TransactionHistory, которая содержит данные. Таблица TransactionHistory использует функцию секционирования TransactionRangePF1, которая разбивает ее по столбцу TransactionDate.

ПримечаниеПримечание

Для выполнения этого примера требуется запустить сценарий PartitionAW.sql для образца базы данных База данных AdventureWorks2008R2. Дополнительные сведения см. в разделе Вопросы установки образцов кода и образцов баз данных SQL Server.

USE AdventureWorks2008R2 ;
GO
SELECT $PARTITION.TransactionRangePF1(TransactionDate) AS Partition, 
COUNT(*) AS [COUNT] FROM Production.TransactionHistory 
GROUP BY $PARTITION.TransactionRangePF1(TransactionDate)
ORDER BY Partition ;
GO

В. Получение всех строк из одной секции секционированной таблицы или индекса

Следующий пример иллюстрирует получение всех строк, которые содержит секция 5 таблицы TransactionHistory.

ПримечаниеПримечание

Для выполнения этого примера требуется запустить сценарий PartitionAW.sql для образца базы данных База данных AdventureWorks2008R2. Дополнительные сведения см. в разделе Вопросы установки образцов кода и образцов баз данных SQL Server.

SELECT * FROM Production.TransactionHistory
WHERE $PARTITION.TransactionRangePF1(TransactionDate) = 5 ;

См. также

Справочник