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

Jak COUNT_BIG() działa w SQL Server

W SQL Server COUNT_BIG() funkcja zwraca liczbę elementów znalezionych w grupie. Możesz go użyć, aby dowiedzieć się, ile wierszy znajduje się w tabeli lub zestawie wyników.

Ta funkcja działa podobnie do COUNT() funkcjonować. Różnica polega na tym, że COUNT() zwraca swój wynik jako int , natomiast COUNT_BIG() zwraca swój wynik jako bigin .

Dlatego COUNT_BIG() może się przydać, jeśli spodziewasz się, że Twój zestaw wyników będzie zawierał bardzo dużą liczbę wierszy (tj. większy niż 2147483647).

Składnia

Składnia wygląda tak:

-- Aggregation Function Syntax  
COUNT_BIG ( { [ [ ALL | DISTINCT ] expression ] | * } )  
  
-- Analytic Function Syntax  
COUNT_BIG ( [ ALL ] { expression | * } ) OVER ( [  ] )

ALL stosuje funkcję agregującą do wszystkich wartości. To jest wartość domyślna.

DISTINCT określa, że ​​funkcja zwraca liczbę unikalnych wartości innych niż null.

expression jest wyrażeniem dowolnego typu. Funkcje agregujące i podzapytania nie są obsługiwane w wyrażeniu.

* określa, że ​​wszystkie wiersze powinny być zliczane i zwracane, w tym wiersze zduplikowane i wiersze zawierające wartości null. COUNT(*) nie przyjmuje parametrów i nie obsługuje użycia DISTINCT . Nie wymaga również wyrażenia parametr (ponieważ nie używa informacji o żadnej konkretnej kolumnie).

OVER ( [ <partition_by_clause> ] dzieli zestaw wyników utworzony przez FROM klauzuli na przegrody, do których funkcja jest stosowana. Jeśli nie zostanie określony, funkcja traktuje wszystkie wiersze zestawu wyników zapytania jako pojedynczą grupę.

Przykład 1 – Podstawowe użycie

Oto podstawowy przykład pokazujący, jak działa ta funkcja:

USE WideWorldImportersDW;
SELECT COUNT_BIG(*) AS 'Row Count' 
FROM Fact.[Order];

Wynik:

+-------------+
| Row Count   |
|-------------|
| 231412      |
+-------------+

W tym przypadku w Fakcie.[Zamówienie] . znajduje się 231412 wierszy tabela.

W tym przypadku mogłem użyć COUNT() aby zwrócić ten sam wynik, ponieważ liczba wierszy jest wystarczająco mała dla int do obsługi.

Przykład 2 – Większy zestaw wyników

Prawdziwa korzyść z używania COUNT_BIG() ma miejsce, gdy zestaw wyników jest znacznie większy niż w poprzednim przykładzie.

Przykład:

SELECT COUNT_BIG(*) AS 'Row Count' 
FROM ReallyBigTable;

Wynik:

+-----------------+
| Row Count       |
|-----------------|
| 9147483648      |
+-----------------+

W tym przypadku liczba wierszy jest tak duża, że ​​int nie byłby w stanie sobie z tym poradzić. Na szczęście możemy użyć COUNT_BIG() , ponieważ zwraca swój wynik jako bigin .

Więcej przykładów

Więcej przykładów znajdziesz w artykule Jak COUNT() Działa w SQL Server. Ten artykuł zawiera więcej przykładów niż wymienione tutaj, z których wszystkie mają również zastosowanie do COUNT_BIG() .

Alternatywa:APPROX_COUNT_DISTINCT()

Jeśli pracujesz z bardzo dużymi zestawami danych, możesz rozważyć użycie APPROX_COUNT_DISTINCT() zamiast COUNT_BIG(DISTINCT ) w niektórych przypadkach.

APPROX_COUNT_DISTINCT() zwraca wartość przybliżoną, a nie dokładną. Jest jednak zaprojektowany tak, aby był znacznie bardziej responsywny niż COUNT_BIG() , więc może być przydatne w czasach, w których szybkość reakcji jest ważniejsza niż precyzja.

Został zaprojektowany do zwracania unikalnych, niepustych wartości, więc będzie miał znaczenie tylko w sytuacjach, w których normalnie używałbyś DISTINCT klauzula z COUNT_BIG() .

Pamiętaj też, że w momencie pisania APPROX_COUNT_DISTINCT() jest w stanie publicznego podglądu.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak włączyć SQL Server Agent XP za pomocą T-SQL?

  2. Klauzula wyjściowa SQL Server do zmiennej skalarnej

  3. Interfejsy sieciowe programu SQL Server:ciąg połączenia jest nieprawidłowy [87]

  4. Czy można uzyskać dostęp do bazy danych .mdf bez SQL Server?

  5. Jak skonfigurować chmurę Spotlight i skutecznie rozwiązywać problemy z SQL Server