sql >> Database teknologi >  >> RDS >> Sqlserver

Find ud af, hvilken partition en given værdi ville være knyttet til i SQL Server (T-SQL)

Hvis du har en partitioneret tabel eller et indeks i SQL Server, og du ønsker at bestemme, hvilken partition en given værdi vil blive mappet til, kan du gøre dette hurtigt og nemt med $PARTITION systemfunktion.

Alt du behøver at vide er navnet på partitionsfunktionen (og selvfølgelig den værdi, du er interesseret i).

Eksempel

Her er et eksempel til at demonstrere.

SELECT $PARTITION.MoviesPartitionFunction(5);

Resultat:

+--------------------+
| (No column name)   |
|--------------------|
| 2                  |
+--------------------+

I dette tilfælde værdien 5 ville gå ind i partition nummer 2.

Lad os prøve nogle andre værdier.

SELECT 
    $PARTITION.MoviesPartitionFunction(-100) AS [-100],
    $PARTITION.MoviesPartitionFunction(100) AS [100],
    $PARTITION.MoviesPartitionFunction(1000) AS [1000],
    $PARTITION.MoviesPartitionFunction(100000) AS [100000];

Resultat:

+--------+-------+--------+----------+
| -100   | 100   | 1000   | 100000   |
|--------+-------+--------+----------|
| 1      | 2     | 3      | 4        |
+--------+-------+--------+----------+

Forespørgsler på tværs af databaser

Du kan også præfikse databasenavnet for at forespørge en anden database.

SELECT MovieDb.$PARTITION.MoviesPartitionFunction(5);

Datatypekonvertering

Datatypen for den værdi, du angiver, skal enten matche eller være implicit konverterbar til datatypen for dens tilsvarende partitioneringskolonne.

Hvis ikke, vil du sandsynligvis få fejl 245.

SELECT $PARTITION.MoviesPartitionFunction('Hey!');

Resultat:

Msg 245, Level 16, State 1, Line 1
Conversion failed when converting the varchar value 'Hey!' to data type int.

Bemærk at $PARTITION returnerer partitionsnummeret for enhver gyldig værdi, uanset om værdien i øjeblikket findes i en opdelt tabel eller et indeks, der bruger partitionsfunktionen.


  1. Hvordan kan jeg se, om jeg har uforpligtende arbejde i en Oracle-transaktion?

  2. Formater SQLite-forespørgselsresultater som kolonner med kolonneoverskrifter

  3. Sådan rettes dobbeltkodede UTF8-tegn (i en utf-8-tabel)

  4. Hvad er fordelene ved at have en salgsdatabase?