Para testar isso, o experimento realmente precisa particionar a tabela. Consulte http://www.kodyaz.com/articles/how-to-partition-table-non-partitioned-table-sql-server-2008.aspx
Consultar a função de particionamento apenas informa o que a função de particionamento diz. Não diz onde os dados estão armazenados. Você pode configurar uma função de particionamento e executá-la sem realmente particionar uma tabela, como já foi demonstrado aqui.
Para particionar a tabela, você também precisa criar grupos de arquivos e um esquema de particionamento que use a função de particionamento para atribuir resultados da função a grupos de arquivos. Então você deve colocar uma chave em cluster na tabela que usa esse esquema de particionamento.
Configure o particionamento
Não sou especialista em SQL de linha de comando. Usei a interface SSMS para configurar os grupos de arquivos pfg1 (com um arquivo pf1) e pfg2 (com um arquivo pf2). Então eu declarei a função e o esquema de particionamento:
CREATE PARTITION FUNCTION IDRange1 (int)
AS RANGE LEFT FOR VALUES (10) ;
GO
CREATE PARTITION SCHEME ps_IDRange1
AS PARTITION IDRange1
TO (pfg1, pfg2)
GO
Crie a tabela e o índice clusterizado
CREATE TABLE [IDRanges](
[ID] [int] NOT NULL
)
GO
CREATE CLUSTERED INDEX PK_IDRanges
ON dbo.IDRanges(id) ON ps_IDRange1 (ID)
GO
Depois de fazer isso, quando você consulta sys.partitions (eu tenho 2005), você vê que a tabela agora tem duas partições em vez de apenas uma para a tabela. Isso indica que implementamos totalmente o particionamento para esta tabela.
select * from sys.partitions where object_id = object_id('IDRanges')
partition_id object_id index_id partition_number hobt_id linhas
-------------------- ----------- ----------- -------- -------- -------------------- --------------------
72057597780295680 770674389 1 1 72057597780295680 0
72057597780361216 770674389 1 2 72057597780361216 0
Agora que temos duas partições (com uma contagem de linhas para cada uma), podemos realizar um experimento.
Inserir as linhas
INSERT INTO IDRanges ([ID]) VALUES (17)
INSERT INTO IDRanges ([ID]) VALUES (7)
Verifique as partições sys. para ver o que aconteceu.
select * from sys.partitions where object_id = object_id('IDRanges')
partition_id object_id index_id partition_number hobt_id linhas
-------------------- ----------- ----------- -------- -------- -------------------- --------------------
72057597780295680 770674389 1 1 72057597780295680 1
72057597780361216 770674389 1 2 72057597780361216 1
Sim. Uma linha em cada partição.
Mover uma linha.
UPDATE IDRanges
SET [ID] = 8 WHERE [ID] = 17
Verifique as partições
select * from sys.partitions where object_id = object_id('IDRanges')
partition_id object_id index_id partition_number hobt_id linhas
-------------------- ----------- ----------- -------- -------- -------------------- --------------------
72057597780295680 770674389 1 1 72057597780295680 2
72057597780361216 770674389 1 2 72057597780361216 0
A primeira partição agora tem duas linhas em vez de 1 e a segunda partição tem zero linhas em vez de duas.
Eu acho que isso confirma que a linha foi movida automaticamente como resultado da modificação da chave em cluster em uma tabela particionada.