Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

3 sposoby na zwrócenie liczby wierszy w każdej partycji w SQL Server (T-SQL)

Jeśli wcześniej utworzyłeś partycjonowaną tabelę w SQL Server, a teraz chcesz wiedzieć, ile wierszy jest przechowywanych w każdej partycji, oto trzy zapytania, których możesz użyć.

W szczególności możesz:

  • Zapytaj sys.dm_db_partition_stats zobacz
  • Zapytaj sys.partitions zobacz
  • Użyj $PARTITION funkcja w zapytaniu

Poniżej znajdują się przykłady wszystkich trzech.

sys.dm_db_partition_stats

sys.dm_db_partition_stats Widok dynamicznego zarządzania systemem zwraca informacje o liczbie stron i wierszy dla każdej partycji w bieżącej bazie danych.

Oto przykład zwracania liczby wierszy podzielonej na partycje tabeli o nazwie Filmy .

SELECT numer_partycji, row_countFROM sys.dm_db_partition_statsWHERE object_id =OBJECT_ID('Filmy'); 

Wynik:

+---------------------+--------------+| numer_partycji | liczba_wierszów ||--------------------+-------------||| 1 | 0 || 2 | 100 || 3 | 3979 || 4 | 0 |+---------------------+-------------+

W takim przypadku pierwsza i ostatnia partycja są puste (zgodnie z zaleceniami firmy Microsoft).

sys.partitions

sys.partitions widok katalogu systemowego zawiera wiersz dla każdej partycji wszystkich tabel i większości typów indeksów w bazie danych.

Oto, jak możemy go użyć do zwrócenia tych samych danych, co w poprzednim przykładzie.

SELECT numer_partycji, wierszeFROM sys.partitionsWHERE object_id =OBJECT_ID('Filmy'); 

Wynik:

+---------------------+--------+| numer_partycji | wiersze ||--------------------+---------|| 1 | 0 || 2 | 100 || 3 | 3979 || 4 | 0 |+---------------------+--------+

Możesz zauważyć, że jest to prawie identyczne z poprzednim zapytaniem. Jedyna różnica polega na tym, że ten używa kolumny o nazwie rows , podczas gdy poprzedni używał kolumny o nazwie row_count .

$PARTITIONS

$PARTITIONS funkcja systemowa zwraca numer partycji, na który zestaw wartości kolumn partycjonujących zostanie odwzorowany dla dowolnej określonej funkcji partycji.

Możemy zatem użyć tych informacji do skonstruowania zapytania, które zwraca dane o liczbie wierszy.

SELECT $PARTITION.MoviesPartitionFunction(MovieId) AS [Numer partycji], COUNT(*) AS [Liczba wierszy] FROM Movies GROUP BY $PARTITION.MoviesPartitionFunction(MovieId)ORDER BY [Numer partycji] ASC 

Wynik:

+--------------------+------------------+| Numer partycji | Liczba wierszy ||--------------------+------------------|| 2 | 100 || 3 | 3979 |+---------------------+------------------+

Jedyna różnica w wyniku tego przykładu polega na tym, że zwraca on tylko liczbę niepustych wierszy.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Typy kursorów programu SQL Server — co to są kursory statyczne w programie SQL Server | Samouczek SQL Server / Samouczek TSQL

  2. Proste funkcje SQL Server do rozwiązywania rzeczywistych problemów

  3. 50 najważniejszych pytań do rozmowy kwalifikacyjnej na temat SQL Server, które musisz przygotować w 2022 r.

  4. Użyj COL_LENGTH(), aby uzyskać długość kolumny w SQL Server

  5. Jak dodać lub upuścić kolumnę za pomocą graficznego interfejsu użytkownika w SQL Server — samouczek SQL Server / T-SQL, część 39