Чтобы проверить это, эксперимент должен фактически разделить таблицу. См. Http://www.kodyaz.com/articles/how-to-partition-table-non-partitioned-table-sql-server-2008.aspx
Запрос функции разделения просто говорит вам, что говорит функция разделения. Там не сказано, где хранятся данные. Вы можете настроить функцию разделения и запустить ее без фактического разделения таблицы, как уже было продемонстрировано здесь.
Чтобы разделить таблицу, вы также должны создать группы файлов и схему разделения, которая использует функцию разделения для назначения результатов функции группам файлов. Затем вы должны поместить кластерный ключ в таблицу, которая использует эту схему разбиения.
Настройте разделение
Я не эксперт в командной строке SQL. Я использовал интерфейс SSMS для настройки групп файлов pfg1 (с файлом pf1) и pfg2 (с файлом pf2). Затем я объявил функцию разделения и схему:
CREATE PARTITION FUNCTION IDRange1 (int)
AS RANGE LEFT FOR VALUES (10) ;
GO
CREATE PARTITION SCHEME ps_IDRange1
AS PARTITION IDRange1
TO (pfg1, pfg2)
GO
Создать таблицу и кластерный индекс
CREATE TABLE [IDRanges](
[ID] [int] NOT NULL
)
GO
CREATE CLUSTERED INDEX PK_IDRanges
ON dbo.IDRanges(id) ON ps_IDRange1 (ID)
GO
После того, как вы это сделаете, когда вы запросите sys.partitions (у меня есть 2005), вы увидите, что в таблице теперь есть два раздела вместо одного для таблицы. Это указывает на то, что мы полностью реализовали разбиение для этой таблицы.
select * from sys.partitions where object_id = object_id('IDRanges')
идентификатор_раздела_идентификатор_объекта
-------------------- ----------- ----------- -------- -------- -------------------- --------------------
72057597780295680 770674389 1 1 72057597780295680 0
72057597780361216 770674389 1 2 72057597780361216 0
Теперь, когда у нас есть два раздела (с количеством строк для каждого), мы можем провести эксперимент.
Вставьте строки
INSERT INTO IDRanges ([ID]) VALUES (17)
INSERT INTO IDRanges ([ID]) VALUES (7)
Проверьте sys.partitions, чтобы увидеть, что случилось.
select * from sys.partitions where object_id = object_id('IDRanges')
идентификатор_раздела_идентификатор_объекта
-------------------- ----------- ----------- -------- -------- -------------------- --------------------
72057597780295680 770674389 1 1 72057597780295680 1
72057597780361216 770674389 1 2 72057597780361216 1
Ага. Одна строка в каждом разделе.
Переместить ряд.
UPDATE IDRanges
SET [ID] = 8 WHERE [ID] = 17
Проверьте разделы
select * from sys.partitions where object_id = object_id('IDRanges')
идентификатор_раздела_идентификатор_объекта
-------------------- ----------- ----------- -------- -------- -------------------- --------------------
72057597780295680 770674389 1 1 72057597780295680 2
72057597780361216 770674389 1 2 72057597780361216 0
Первый раздел теперь имеет две строки вместо 1, а второй раздел имеет нулевые строки вместо двух.
Я думаю, это подтверждает, что строка была автоматически перемещена в результате изменения кластеризованного ключа в многораздельной таблице.