Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

3 начина за връщане на броя на редовете във всеки дял в SQL Server (T-SQL)

Ако преди сте създали разделена таблица в SQL Server и сега искате да знаете колко реда се съхраняват във всеки дял, ето три заявки, които можете да използвате.

По-специално, можете:

  • Потърсете sys.dm_db_partition_stats преглед
  • Направете заявка за sys.partitions преглед
  • Използвайте $PARTITION функция в заявка

По-долу са дадени примери и за трите.

sys.dm_db_partition_stats

sys.dm_db_partition_stats изгледът за динамично управление на системата връща информация за броя на страниците и редовете за всеки дял в текущата база данни.

Ето пример за връщане на броя на редовете на разделена таблица, наречена Movies .

SELECT
    partition_number,
    row_count
FROM sys.dm_db_partition_stats
WHERE object_id = OBJECT_ID('Movies');

Резултат:

+--------------------+-------------+
| partition_number   | row_count   |
|--------------------+-------------|
| 1                  | 0           |
| 2                  | 100         |
| 3                  | 3979        |
| 4                  | 0           |
+--------------------+-------------+

В този случай първият и последният дял са празни (както се препоръчва от Microsoft).

sys.partitions

sys.partitions изгледът на системния каталог съдържа ред за всеки дял на всички таблици и повечето типове индекси в базата данни.

Ето как можем да го използваме, за да върнем същите данни като в предишния пример.

SELECT
    partition_number,
    rows
FROM sys.partitions
WHERE object_id = OBJECT_ID('Movies');

Резултат:

+--------------------+--------+
| partition_number   | rows   |
|--------------------+--------|
| 1                  | 0      |
| 2                  | 100    |
| 3                  | 3979   |
| 4                  | 0      |
+--------------------+--------+

Може да забележите, че това е почти идентично с предишната заявка. Единствената разлика е, че този използва колоната, наречена rows , докато предишният използва колона, наречена row_count .

$PARTITIONS

$PARTITIONS системната функция връща номера на дяла, в който набор от стойности на колоната за разделяне ще бъде съпоставен за всяка определена функция на дял.

Следователно можем да използваме тази информация, за да създадем заявка, която връща данни за броя на редовете.

SELECT 
    $PARTITION.MoviesPartitionFunction(MovieId) AS [Partition Number],   
    COUNT(*) AS [Number of Rows] 
FROM Movies   
GROUP BY $PARTITION.MoviesPartitionFunction(MovieId)
ORDER BY [Partition Number] ASC

Резултат:

+--------------------+------------------+
| Partition Number   | Number of Rows   |
|--------------------+------------------|
| 2                  | 100              |
| 3                  | 3979             |
+--------------------+------------------+

Единствената разлика с резултата от този пример е, че той връща само броя на непразните редове.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да промените типа данни на колона в SQL база данни, без да губите данни

  2. Инсталиране на клъстер за отказване на SQL сървър -3

  3. Експортиране на таблица от база данни в csv файл

  4. SQUARE() Примери в SQL Server

  5. Как да увеличите размера на файла с данни в SQL Server (T-SQL)