$PARTITION (Transact-SQL)

Si applica a:SQL Server database SQL di Azure Istanza gestita di SQL di Azure

Restituisce il numero di partizione in cui verrà eseguito il mapping di un set di valori di colonna di partizionamento per qualsiasi funzione di partizione specificata.

Convenzioni di sintassi Transact-SQL

Sintassi

[ database_name. ] $PARTITION.partition_function_name(expression)  

Nota

Per visualizzare la sintassi Transact-SQL per SQL Server 2014 (12.x) e versioni precedenti, vedere la documentazione delle versioni precedenti.

Argomenti

database_name
Nome del database contenente la funzione di partizione.

partition_function_name
Nome di una funzione di partizione esistente in base alla quale viene applicato un set di valori di una colonna di partizionamento.

expression
Espressione il cui tipo di dati deve corrispondere al tipo di dati della colonna di partizionamento corrispondente o deve poter essere convertito in modo implicito in tale tipo di dati. expression può essere anche il nome di una colonna di partizionamento che partecipa a partition_function_name.

Tipi restituiti

int

Osservazioni:

$PARTITION restituisce un valore int compreso tra 1 e il numero di partizioni della funzione di partizione.

$PARTITION restituisce il numero di partizione per qualsiasi valore valido, indipendentemente dal fatto che il valore esista in una tabella o in un dice partizionato che utilizza la funzione di partizione.

Esempi

R. Recuperare il numero di partizione per un set di valori di colonne di partizionamento

Questo esempio crea una funzione di partizione RangePF1 usando RANGE LEFT per eseguire il partizionamento di una tabella o di un indice in quattro partizioni. $PARTITION consente di stabilire che il valore 10, che rappresenta la colonna di partizionamento di RangePF1, verrebbe inserito nella partizione 1 della tabella.

CREATE PARTITION FUNCTION RangePF1 ( INT )  
AS RANGE LEFT FOR VALUES (10, 100, 1000) ;  
GO

SELECT $PARTITION.RangePF1 (10) ;  
GO  

B. Recuperare il numero di righe di ogni partizione non vuota di una tabella o di un indice partizionato

Questo esempio illustra come usare $PARTITION per restituire il numero di righe in ogni partizione della tabella che contiene dati.

Esempio:

  • Crea uno schema di partizione, RangePS1, per la funzione di partizione RangePF1.
  • Crea una tabella, dbo.PartitionTable, nello schema di partizione RangePS1 con col1 come colonna di partizionamento.
  • Inserisce quattro righe nella tabella dbo.PartitionTable. In base alla definizione della funzione di partizione, queste righe verranno inserite nelle partizioni 2 e 3. Le partizioni 1 e 4 rimarranno vuote.
  • Esegue query su dbo.PartitionTable e usa $PARTITION.RangePF1(col1) nella clausola GROUP BY per eseguire query sul numero di righe in ogni partizione contenente dati.

Nota

Per eseguire questo esempio, è prima di tutto necessario creare la funzione RangePF1 di partizione usando il codice nell'esempio precedente.

CREATE PARTITION SCHEME RangePS1  
    AS PARTITION RangePF1  
    ALL TO ('PRIMARY') ;  
GO  

CREATE TABLE dbo.PartitionTable (col1 int PRIMARY KEY, col2 char(10))  
    ON RangePS1 (col1) ;  
GO

INSERT dbo.PartitionTable (col1, col2)
VALUES ((1,'a row'),(100,'another row'),(500,'another row'),(1000,'another row'))


SELECT 
	$PARTITION.RangePF1(col1) AS Partition,   
	COUNT(*) AS [COUNT] 
FROM dbo.PartitionTable
GROUP BY $PARTITION.RangePF1(col1)  
ORDER BY Partition ;  
GO  

La query SELECT restituirà i risultati seguenti:

Partizione COUNT
2 1
3 3

Le righe non vengono restituite per le partizioni numero 1 e 4, che esistono ma non contengono dati.

C. Restituire tutte le righe di una partizione di una tabella o di un indice partizionato

L'esempio seguente restituisce tutte le righe incluse nella partizione 3 della tabella PartitionTable.

SELECT col1, col2
FROM dbo.PartitionTable
WHERE $PARTITION.RangePF1(col1) = 3 ;  

La query restituirà i risultati seguenti:

col1 col2
101 Un'altra riga
500 Una terza riga
501 Una quarta riga

Passaggi successivi

Per altre informazioni sul partizionamento delle tabelle, vedere questi articoli: