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.