sql >> Databáze >  >> RDS >> Sqlserver

Jak funguje COUNT_BIG() na serveru SQL

V SQL Server, COUNT_BIG() Funkce vrací počet položek nalezených ve skupině. Můžete jej použít ke zjištění, kolik řádků je v tabulce nebo sadě výsledků.

Tato funkce funguje podobně jako COUNT() funkce. Rozdíl je v tom, že COUNT() vrátí výsledek jako int , zatímco COUNT_BIG() vrátí výsledek jako bigint .

Proto COUNT_BIG() může se hodit, pokud očekáváte, že vaše sada výsledků bude mít velmi velký počet řádků (tj. větší než 2 147 483 647).

Syntaxe

Syntaxe vypadá takto:

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

ALL aplikuje agregační funkci na všechny hodnoty. Toto je výchozí hodnota.

DISTINCT určuje, že funkce vrací počet jedinečných hodnot bez hodnoty null.

expression je výraz jakéhokoli typu. Agregační funkce a poddotazy nejsou ve výrazu podporovány.

* určuje, že by měly být spočítány a vráceny všechny řádky, včetně duplicitních řádků a řádků, které obsahují hodnoty null. COUNT(*) nemá žádné parametry a nepodporuje použití DISTINCT . Také to nevyžaduje výraz parametr (protože nepoužívá informace o žádném konkrétním sloupci).

OVER ( [ <partition_by_clause> ] rozděluje sadu výsledků vytvořenou FROM klauzule do oddílů, na které je funkce aplikována. Pokud není zadáno, funkce považuje všechny řádky sady výsledků dotazu za jednu skupinu.

Příklad 1 – Základní použití

Zde je základní příklad ukazující, jak tato funkce funguje:

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

Výsledek:

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

V tomto případě je v Fact.[Objednávka] 231412 řádků tabulka.

V tomto případě jsem mohl použít COUNT() vrátit stejný výsledek, protože počet řádků je dostatečně malý na int zvládnout.

Příklad 2 – Větší sada výsledků

Skutečná výhoda použití COUNT_BIG() je, když je vaše sada výsledků mnohem větší než v předchozím příkladu.

Příklad:

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

Výsledek:

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

V tomto případě je počet řádků tak velký, že int by to nezvládl. Naštěstí můžeme použít COUNT_BIG() , protože výsledek vrátí jako bigint .

Další příklady

Další příklady najdete v tématu Jak COUNT() Funguje na serveru SQL Server. Tento článek poskytuje více příkladů, než je zde uvedeno, přičemž všechny platí také pro COUNT_BIG() .

Alternativa:APPROX_COUNT_DISTINCT()

Pokud pracujete s velmi velkými soubory dat, můžete zvážit použití APPROX_COUNT_DISTINCT() místo COUNT_BIG(DISTINCT ) v některých případech.

APPROX_COUNT_DISTINCT() vrátí přibližnou hodnotu, nikoli přesnou hodnotu. Je však navržen tak, aby byl mnohem pohotovější než COUNT_BIG() , takže by to mohlo být užitečné v situacích, kdy je odezva důležitější než přesnost.

Je navržen tak, aby vracel jedinečné hodnoty bez nuly, takže by byl relevantní pouze v případech, kdy byste normálně používali DISTINCT klauzule s COUNT_BIG() .

Všimněte si také, že v době psaní APPROX_COUNT_DISTINCT() je ve stavu veřejného náhledu.


  1. Každý výraz GROUP BY musí obsahovat alespoň jeden sloupec, který není vnějším odkazem

  2. Proč používat úroveň izolace READ UNCOMMITTED?

  3. Jak UPPER() funguje v MariaDB

  4. Crystal Reports vs. Microsoft SQL Server Reporting Services